指针取消引用巴拉圭

时间:2019-06-25 11:34:19

标签: c pointers

什么时候使用指针取消引用有什么麻烦,而不是在需要时取消引用指针。代码如下。 这里的错误是什么,无法理解。 在ansi c的balagurusamy书中给出。

int *p,m=100 ;
p = &x ;
printf("%d",p) ;/*error*/

1 个答案:

答案 0 :(得分:2)

修正代码中的几件事:

#include <stdio.h>

int main(void)
{
    int *p, m = 100, x = 10;
    p = &x; // In words, making 'p' to point to the address of 'x'
    printf("Address %p contains a value %d..", (void *)p,   *p);
    //              ^^                         ^^^^^^^^^    ^
    //              Using the correct          Typecasting  Dereferencing
    //              format specifier           the pointer  the pointer
    //              
    // Some code
    return 0;
}

生成的输出:

Address 0x7ffdf396c128 contains a value 10..

如果您尝试使用相同的代码(地址不太可能相同),则应该获得不同的结果。

说明:

    您提供的代码段中未定义
  • x
  • 使用指针指向兼容的数据类型时,可以通过取消引用指针来打印值。
  • 如果要打印指针本身的值,则需要先将其强制转换为void,然后使用%p格式说明符而不是使用%d
  • List of common format specifier in C programming