小编Ste*_*cke的帖子

指针与引用变量的类型不同

我目前正在学习如何用C语言编程.今天我开始使用指针,我遇到了以下情况.当我编译程序时

#include<stdio.h>

int main() {

    int a;
    double * p;
    p = &a;
    *p = 12.34;
    printf("%d\n",a);
    * (int *) p = 12.34;
    printf("%d\n",a);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它说

$ gcc zeigertypen.c 
zeigertypen.c: In function ‘main’:
zeigertypen.c:7:7: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
Run Code Online (Sandbox Code Playgroud)

并在执行时,我得到输出

2061584302
Speicherzugriffsfehler (Speicherabzug geschrieben)
Run Code Online (Sandbox Code Playgroud)

错误消息是德语之类的

memory access error (core dumped)
Run Code Online (Sandbox Code Playgroud)

但是,如果我注释掉该行,*p = 12.34;则错误消失并且输出为

0
12
Run Code Online (Sandbox Code Playgroud)

代码的目的是演示与它们引用的变量不同类型的指针的问题.根据我用来学习C++的教科书,输出应该是

2061584302
12
Run Code Online (Sandbox Code Playgroud)

c types pointers

0
推荐指数
1
解决办法
90
查看次数

标签 统计

c ×1

pointers ×1

types ×1