【发布时间】:2018-11-01 03:55:07
【问题描述】:
我有一个关于指针指针的问题。
这是我的代码
#include <stdio.h>
void main()
{
int num=10;
int *numPtr1;
int **numPtr2;
numPtr1 = #
numPtr2 = &numPtr1;
printf("%d\n", num);
printf("%d\n", *numPtr1);
printf("%d\n", **numPtr2);
printf("%p\n", &num);
printf("%p\n", numPtr1);
printf("%p", numPtr2);
}
为什么numPtr2的地址和numPtr1、numPtr2不一样? 例如,让 num 的地址为 0x7fffaca780b4。然后当我运行这段代码时,输出是
10
10
10
0x7fffaca780b4
0x7fffaca780b4
0x7fffaca780b8
对不起我的英语不好
【问题讨论】:
-
你为什么不让
numPtr1指向别的东西并再次运行你的程序。也许它会变得清晰。 -
numPtr1的地址是num,numPtr2的地址是numPtr1,因此*numPtr2是num的地址。 -
这些打印语句中的大多数都是未定义的行为,因此毫无意义。
%d的参数必须具有int类型。%p的参数必须具有void *类型。
标签: c pointers pointer-to-pointer