C言語のポインタについて学習中です。ポインタ変数同士での代入式でどのような式が可能でどのような式が不可能なのかわからないので回答してほしいです。まず、はじめに書いたコードがこれです。
#include <stdio.h> void function(int *func){ *func = 500; } int main(void){ int a = 5; int *b, *c; b = &a; c = b; printf("%d\n", *c); function(c); printf("%d\n", *c); return 0; }
これの結果が
5 500
でした。
c = b;をすることで、ポインタ変数cが【bが指しているアドレス】、すなわちaのアドレスを指すようになり、このような結果を得たのだと僕は考えました。この考えは正しいのでしょうか。
そして次に書いたコードがこれです。
#include <stdio.h> int main(void){ int a = 5, b = 10, temp; int *x = &a, *y = &b; printf("a = %d, b = %d\n", a, b); temp = *x; x = y; *y = temp; a = *x; b = *y; printf("a = %d, b = %d\n", a, b); return 0; }
これの結果は
a = 5, b = 10 a = 5, b = 5
となりました。もちろんx = y;のところを*x = *y;とすれば2値の交換はできるのですが、このコードではできませんでした。
どうしてこのような結果となったのでしょうか。教えていただけるとありがたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。