C语言关于指针的问题,指针的地址

char * p="abcdefg";

printf("%s\n",p);
printf("%d\n",*(p+1));
//p不是一个地址吗?为什么printf("%s\n",p);会打印出abcdefg?如何打印存放指针常量p的物理地址?

printf("%s\n",p);为打印字符串,传的是字符串的地址,p就是一个指向这个字符串地址,所以没什么问题。
若你要打印这个物理地址,直接printf("%d\n",p);就可以拉,你加个*,就是取这个地址的值了,所以printf("%d\n",*p); 等于97(即ASCII码的 a 的值),printf("%d\n",*(p+1)); 等于98(即ASCII码的 b 的值)
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-08-09
试一下%p格式
相似回答