C指值 为什么输出的值 不一样

點點灬愛護 发布于 2012/08/11 16:07
阅读 218
收藏 0

void main(){
char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer desighn"};
 char **p;
   p = name + 2;
   printf("%o\n",*p);//输出地址
   printf("%s\n",*p);//输出字符串

getchar();
}

加载中
0
一一无念
一一无念
printf("%o\n",*p);//输出地址 [%o]输出了字符串[ Great Wall ]地址
printf("%s\n",*p);//输出字符串 [%s
输出了 字符串[ Great Wall ]的内容???
點點灬愛護
點點灬愛護
是的
0
點點灬愛護
點點灬愛護
输出结果:
0
一一无念
一一无念
%o是以八进制的方式输出"Great Wall" 进行的转换,并不是地址

0
周翼翼
周翼翼

引用来自“一一无念”的答案

%o是以八进制的方式输出"Great Wall" 进行的转换,并不是地址

少年, 你有没有编译过它的代码来看看输出, 或者网上找过%o的说明?

 

0
goodluck
goodluck
void main(){
char *p="Great Wall";
char p2[]="Great Wall";
   printf("%x\n",p);//输出地址
   printf("%s\n",p);//输出字符串
   printf("%x\n",p2);//输出地址
   printf("%s\n",p2);//输出字符串
}

如果改成这样,你会多次发现运行时,p 的%x输出都一样,而p2的%x输出每次都不一样

 

0
goodluck
goodluck
C中字符指针、字符数组、字符串这几个概念很多时候是可以通用的
返回顶部
顶部