下の構造体からポインタ 'p'に含まれる値が間違って印刷され、正しく印刷する方法が見つかりません。それにふさわしいコードは何ですか? コード:構造体からポインタの値を出力する方法
#include <stdio.h>
struct my_struct{ //structure definition
int a,*p;
};
int main(){
my_struct var;
var.a = 5; //variable definition
var.p = &(var.a); //pointer gets address from variable
printf("%d\n",var.p); // the number 2686744 is printed instead of the number '5'
return 0;
}
'* var.p'で参照しない... –
ポインタ自体はちょうどアドレスです。それが指し示す値が必要なので、 '*'演算子、つまり '* var.p 'で逆参照する必要があります。'&(var.a) 'のかっこを削除し、代わりに'&var。これははるかに標準的です。 –
'.'は単項逆参照' * '(_not_ multiply!)より優先順位が高いので、' *(var.p) 'の他の提案のカッコは厳密にオプションであり、優先ルールを覚えるのは面倒ではありません;-)。 Tomのコメントが示すように、 '.'と'& 'は同じことが言えます。 –