|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
char *p[5] = { "notepad", "calc", "write", "mspaint", "taskmgr" };
printf("%p,%p,%p\n", p,p[1],*p);
for (int i = 0; i < 5; i++)
{
printf("%s,%c\n", p[i],*p[i]);
}
请问这里的P[i]和*p[i],是什么意思,为何一个用%s,一个%c来接收。
另外,我查看了内存地址,分别是008b6930 008b693c 008b6944 008b694c 008b6958,为何间隔不是一样大
求大佬们解答一下,万分感谢
刚刚被审核了?
- #include <stdio.h>
- int main()
- {
-
- char *p[5] = { "notepad11", "calc", "write", "mspaint", "taskmgr" };//定义了一个指针数组,实际上就是定义了五个指针
- printf("%p,%p,%p\n", p,p[1],*p);
- for (int i = 0; i < 5; i++)
- {
- printf("%p,\t", p[i]);//打印指针所指向的单元的地址,因为每个字符串长度不一样,所以地址间隔也不一样,地址间隔就是字符串的长度+1,因为字符串后面会自动添加一个结束字符'\0'
- printf("%p,\t",&p[i]);//打印指针的地址,指针也是一类变量,也有自己的地址,每个指针的长度就是8字节(与系统有关,64位系统是8字节,32位系统是4字节)
- printf("%s,\t",p[i]);//%s是打印 字符串,后面需给出字符串的首地址,也就是指针指向的地址
- printf("%c\n",*p[i]);//*p[i]是指针所指向单元的内容,指针指向了字符串首地址,所以该单元的内容实际上就是字符串的首字母。
- }
- return 0;
- }
复制代码
|
|