C中的示例指针不起作用

时间:2016-02-18 10:57:13

标签: c

我是新学习C,现在学习指针,我从这个网站学习,但这段代码给我一个错误:pointer.c:在函数'main'中: pointer.c:6:5:警告:格式'%d'需要类型为'int'的参数,但参数2的类型为'int *'[-Wformat =]      printf(“地址:%d”,& var); //注意,变量前的&符号(&)

我用以下代码编译它:gcc -o pointer pointer.c

/* Example to demonstrate use of reference operator in C programming. */
#include <stdio.h>
int main(){
int var = 5;
printf("Value: %d\n",var);
printf("Address: %d",&var);  //Notice, the ampersand(&) before var.
return 0;
}

http://www.programiz.com/c-programming/c-pointers

3 个答案:

答案 0 :(得分:2)

您正在尝试打印var的地址,就好像它是一个有符号整数,它不是。它是一个指针,可能与整数的大小不同。

将不匹配类型的值传递给printf()会调用未定义的行为,这就是编译器发出友好警告的原因。

您应该使用%p对其进行格式化,并将值转换为(void *)以符合C标准:

printf("Address: %p\n", (void *) &var);

答案 1 :(得分:2)

请为每种数据类型使用正确的format specifiers。地址由%p。

指定

答案 2 :(得分:1)

最好使用%p打印指针。从规范:

  

p参数应该是指向void的指针。指针的值是   转换为一系列打印字符,在   实现定义的方式。

不要忘记演员:printf("Address: %p\n",(void*)&var);