我将此代码放入eclipse并运行它
main()
{
int *p, *q, *r;
int a = 10, b = 25;
int c[4] = {6,12,18,24};
p = c;
printf("p = %d\n" ,p);
}
我得到的输出是 p = 2358752
这个数字应该代表什么?它是变量的地址吗?
如果我上面说的是真的,我对以下问题的回答是否正确?
所以我们可以说以下内容存储在以下位置
address variables
5000 p
5004 q
5008 r
500C a
5010 b
5014 c[0]
5018 c[1]
501C c[2]
5020 c[3]
行也是如此
p = c;
是5014?
答案 0 :(得分:2)
int *p,
上述语句将p
定义为指向整数的指针。
在下面的语句中,c
被隐式转换为指向数组a
的第一个元素的指针。
p = c;
// equivalent to
p = &c[0];
因此,p
包含数组第一个元素的地址。此外,打印地址的转换说明符为%p
。
printf("p = %p\n", (void *)p);
// prints the same address
printf("c = %p\n", (void *)c);
答案 1 :(得分:1)
是的,p
是c
的地址,与c[0]
的地址相同。是的,在你的第二个例子中,p
将等于5014。