C 指针反引用balagurusamy

C 指针反引用balagurusamy,c,pointers,C,Pointers,指针在需要时取消引用,而不是在需要时取消引用,有什么问题。代码如下。 这里的错误是什么,无法理解。 在巴拉古鲁萨米的ansi c书中给出 int *p,m=100 ; p = &x ; printf("%d",p) ;/*error*/ 修复代码中的一些问题: #include <stdio.h> int main(void) { int *p, m = 100, x = 10; p = &x; // In words, making 'p' to

指针在需要时取消引用,而不是在需要时取消引用,有什么问题。代码如下。 这里的错误是什么,无法理解。 在巴拉古鲁萨米的ansi c书中给出

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

修复代码中的一些问题:

#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;
}
如果您尝试相同的代码,您应该会得到不同的结果,因为地址不太可能相同

说明:

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

修复代码中的一些问题:

#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;
}
如果您尝试相同的代码,您应该会得到不同的结果,因为地址不太可能相同

说明:

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

什么是
x
?请发布整个代码。
%d”
用于打印
int
p
不是
int
,而是指向
int
的指针,因此您使用了错误的格式说明符,如果要显示指针指向的位置的值,需要取消引用:
printf(“%d”,*p)
,如果要显示指针本身的值,则需要切换到适当的格式说明符:
printf(“%p”,(void*)p)什么是
x
?请发布整个代码。
%d”
用于打印
int
p
不是
int
,而是指向
int
的指针,因此您使用了错误的格式说明符,如果要显示指针指向的位置的值,需要取消引用:
printf(“%d”,*p)
,如果要显示指针本身的值,则需要切换到适当的格式说明符:
printf(“%p”,(void*)p)