我用C制作了这个程序,我收到一个错误,我不知道如何修复。请帮我找错。 这是我写的代码:
#include <stdio.h>
int main(int argc, char *argv[]){
int x = 98;
int *g = x;
printf("This is x: %d, and this is g: %i.\n", x, *g);
*g=45;
printf("This is x: %d, and this is g: %i.\n", x, *g);
return 0;
}
编译器给出了以下错误:
ex15t.c: In function ‘main’:
ex15t.c:5:12: warning: initialization makes pointer from integer without a cast [enabled by default]
感谢您提供任何帮助。
答案 0 :(得分:6)
行int * g = x;
定义g
类型的变量int *
,然后为其分配x
的值。
扩展了,这可以理解为:
int *g;
g = x;
这显然不是您想要的,因为x
是int
类型而g
是类型int *
。
假设您希望g
指向变量x
,而是执行此操作
int * g = &x;
或者代替这样做,这可能更清楚:
int *g;
g = &x;
答案 1 :(得分:5)
目前你正在向指针指示x中的任何值(98),并且一个int不是指示它警告你的指针。你真正想要的是得到x所在的地址,即指向x的位置。所以....
int *g = x;
需要
int *g = &x;