首页 文章

C中的示例指针无法正常工作[重复]

提问于
浏览
1

这个问题在这里已有答案:

我现在正在学习C和学习指针,我从这个网站学习,但是这段代码给了我一个错误:pointer.c:在函数'main'中:pointer.c:6:5:警告:格式'% d'期望类型'int'的参数,但参数2的类型为'int *'[ - Wformat =] printf(“Address:%d”,&var); //注意,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 回答

  • 2

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

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

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

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

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

  • 2

    如果使用%p打印指针,效果会更好 . 从规格:

    p参数应该是指向void的指针 . 指针的值以实现定义的方式转换为打印字符序列 .

    别忘了演员: printf("Address: %p\n",(void*)&var);

相关问题