2014-04-01 133 views

回答

1

p是一个指向int的指针,*p将是变量的值。在这种情况下,a。只是为了简单起见,您可以将&视为the address of,*作为the content of pointer,因为这篇文章The 5-minute Guide to C Pointers指出。

记得ap是唯一的名字,它们代表一个变量。假设a的地址是1024(这几乎不是真实的情况)。他们的关系如下图所示。 a的值是5,当我们使用p = &a时,我们将a的地址,即1024分配给p*p将检索值the address p pointer to,这是您正在寻找的值:5

pic http://cizixs.u.qiniudn.com/pointer

如果你要打印的淡水河谷,@unwind给出了答案。

Here是一个教程,可能会澄清c指针给你。

5

*p不会“打印”任何东西;这只是一个表达式,它引用指针,并产生任何指向它的值。

您可以打印:

printf("*p=%d\n", *p); 

,它会在你的程序在a打印5因为p点,并a5

%d很重要,它告诉预期值为int,并将其格式化为打印字符串。

您还可以打印指针本身:

printf("p is %p, a is at %p\n", p, (void *) &a); 

这将打印相同的地址两次。格式说明符%p用于打印地址。

1

p是一个指向int的指针。这意味着它可以指向一个地址,其中将存储一个int。

写作

p = &a 

你设置的指针指向在整数的地址被存储。

当您尝试打印* p时,您将获得存储在指针p指向的地址中的值。所以你会得到5.

请记住,运算符&返回一个变量的地址。所以&a将返回变量a的地址。另外,当你想获得存储在地址中的变量值时,如果你有一个指向这个地址的指针,你可以使用解引用运算符*。因此,*p返回存储在p指向的地址中的值。

0
p = &a; 

p是指向a的指针。即p保持地址a。和

*p 

会给出一个值。由于&用于获取变量的地址,因此*用于取消引用指针,即获取指针所指向的变量的值。