在C中打印未赋值的变量

时间:2014-04-17 02:20:22

标签: c variables memory-address

我将此代码放入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?

2 个答案:

答案 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)

是的,pc的地址,与c[0]的地址相同。是的,在你的第二个例子中,p将等于5014。