C指针错误

时间:2013-07-02 03:33:58

标签: c pointers

我用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]

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:6)

int * g = x;定义g类型的变量int *,然后为其分配x的值。

扩展了,这可以理解为:

int *g;
g = x;

这显然不是您想要的,因为xint类型而g是类型int *

假设您希望g指向变量x,而是执行此操作

int * g = &x;

或者代替这样做,这可能更清楚:

int *g;
g = &x;

答案 1 :(得分:5)

目前你正在向指针指示x中的任何值(98),并且一个int不是指示它警告你的指针。你真正想要的是得到x所在的地址,即指向x的位置。所以....

int *g = x;

需要

int *g = &x;