ドットとアロー
Cは参考書レベルならどうにかなってきたかもしれない。
今構造体やってる。が、腑に落ちないところがひとつ。
- >と.の違いがわからない。orz
どうせならどっちかで統一してほしいと思った。
まぁどうせなにか深い事情があるんだと思うから華麗にスルー。
最初にCを読んでみたときは、あちこちにあった->に悩んだよ。
「->!?矢印?新手の代入演算子か!
そうか。A=BをB->Aに書き換えられるんだな!」
なんていう妄想が一秒出てきてはじけたなんてこともあった。
C++の参考書も買ってきたし。これで勝つる!
3/25 17:07追記
uskzさんからご指摘いただきました。
a->bは(*a).bに書き換えできるそうです。
なるほど。*よりも.のほうが優先順位が高いから(*a)なのか。
というわけでびふぉーあふたーどうぞ。
Before
#include <stdio.h> typedef struct Test{ int result; unsigned int n : 3; }Test; int factorial(Test *x){ int i; x -> result = 1; for (i=1; i<=x -> n; i++){ x -> result *= i; } return 0; } int main(void){ Test x; x.n = 4; printf("The address of x:%p\n", &x); printf("The result of factorial:%d\n", factorial(&x)); printf("The result of x:%d\n", x.result); return 0; }
After
#include <stdio.h> typedef struct Test{ int result; unsigned int n : 3; }Test; int factorial(Test *x){ int i; (*x).result = 1; for (i=1; i<=(*x).n; i++){ (*x).result *= i; } return 0; } int main(void){ Test x; x.n = 4; printf("The address of x:%p\n", &x); printf("The result of factorial:%d\n", factorial(&x)); printf("The result of x:%d\n", x.result); return 0; }
相違点だけ書け?アーアー聞こえない。
うまくいきました。uskzさん本当にありがとうございます!