1

このプログラムを 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]

助けてくれてありがとう。

4

2 に答える 2

6

行:はtype のint * g = x;変数を定義し、値を代入しています。gint *x

展開すると、これは次のように読むことができます。

int *g;
g = x;

xtypeintgtypeのように、これは明らかにあなたが望むものではありませんint *

g変数を指したい場合xは、代わりにこれを行います

int * g = &x;

または代わりにこれを行うと、より明確になる場合があります。

int *g;
g = &x;
于 2013-07-02T03:44:39.270 に答える
5

現在、x にある値 (98) をポインターに代入していますが、int はポインターではなく、警告を発します。本当に必要なのは、x がどこにあるかのアドレスを取得することです。つまり、x の場所を指します。そう....

int *g = x;

する必要があります

int *g = &x;
于 2013-07-02T03:35:03.370 に答える