C プログラムにエラーがあります。%d には int が必要であると書かれていますが、int * を読み取っています。以前、4 桁の数字を区切るために、いくつかの mod10 関数を使用しました。各桁を操作した後、除算とその他の mod10 だけで、数字を 4 桁の整数として元に戻し、印刷するように指示します。printf 行で %d を使用すると、%d が「int」を探しているというエラーが返され、「int *」が見つかります。「int *」とは正確には何ですか?ここで何がうまくいかなかったのですか?
5 に答える
アンint *
はpointer to an int
です。
変数へのポインターの値を取得するに*
は、変数名の前に使用します。変数のアドレスを取得するには、&
名前の前に使用します。
例;
int c = 1, d= 0;
int *e = &c; // assign address of c to pointer e
d = *e; // assign value that c points to, to d
printf("%d",d); // print int value of d
printf("%d",*e); // same output as line above. print value c points to
ここでは、ポインターに関する簡単なチュートリアルを示します。
Anint*
は、整数自体ではなく、整数へのポインターです。Cには、他の変数を指すことができる変数であるポインターの概念があり、あらゆる種類の素晴らしいことを行うことができます.
コードを見ないと、どこが間違っているのかを確認するのは少し難しいですが、次のように宣言することでポインターを取得できます。
int * pInt;
または address-of 演算子を使用して:
doSomethingWith (&myInt);
int* は整数変数ではなく、整数へのポインターです。これは、一部のデータを保持する代わりに、一部のデータが存在するメモリ内の場所への参照を保持することを意味します。データが参照する場所にあるデータにアクセスする場合は、ポインターを逆参照する必要があります。
これを行うには、次のようにします。
int a = 100; //an integer variable
int* b= &a; //b is now the location of a in memory
cout << *b; //This dereferences b to the data in a, and prints 100
これがお役に立てば幸いです。修正があれば、どなたでもお知らせください。
int *
整数へのポインタです。
フラグが立てられたコード行、エラー メッセージ、および変数を宣言する行を投稿してください。
文句を言っているコード行を(質問に編集して)表示してください。
あなたの質問に答えるために、 anint*
は へのポインタint
です。たとえば、与えられた
int i;
int *p;
i
と*p
は 型int
であり、&i
とp
は 型int*
です。
C の教科書で「ポインタ」を調べてください。
また、comp.lang.c FAQは優れたリソースです。セクション 4 では、ポインターについて説明します。(ただし、ほとんどの場合、概念を理解し始めた後に発生する質問に答えることが意図されています。)