構造体とポインタとアロー演算子について
1.目的
目次
2.アロー演算子とは
・ポインタが指す構造体(クラス)のメンバへアクセスするために使用する演算子
よく使う使い方:
・参照渡しで、構造体を関数に渡し、その構造体にアクセスするのに使用する。
3.使い方
構造体のポインタ -> メンバ名;
4.プログラムの作成(ポインタの宣言と入力)
//ヘッダファイルのインクルード #include <stdio.h> //構造体の作成 typedef struct{ int storenum; int beside; }Square; //プロトタイプ宣言 void setNum1(Square squ); void setNum2(Square *squ); int main(void){ //構造体の変数定義 Square squ; //値の入力 squ.storenum = 10; squ.beside = 10; //setNum1の実行 setNum1(squ); printf("storenum = %d\n", squ.storenum); printf("beside = %d\n", squ.beside); //setNum2の実行 setNum2(&squ); //a = squ.storenumに上書き printf("storenum = %d\n", squ.storenum); printf("beside = %d\n", squ.beside); return 0; } //構造体に構造体を渡して、計算 void setNum1(Square squ){ squ.storenum = 200; squ.beside = 200; } //構造体に構造体のポインタを渡して計算 void setNum2(Square *squ){ squ->storenum = 500; squ->beside = 500; }
結果:https://paiza.io/projects/yz48Z8rOqUq83YllXCR1IQ?language=c
5.プログラムの説明
・setNumは、通常の引数で渡し、setNum2はポインタで引数を渡している。
・setNumでは、mainでSquareのメンバ変数の値は変更されないが、
setNum2では、mainでSquareのメンバ変数の値が変更される。
・これは、通常の変数と同じ動きとなっている。
関連記事
過去の記事:
C言語:
・組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary
・C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary
・C言語基礎知識3(配列) - Project_OKI’s diary
・知らないと損するお金の話(ふるさと納税、確定申告とワンストップ納税どっちが得?) - Project_OKI’s diary
・C言語基礎知識6(関数) - Project_OKI’s diary
・C言語基礎知識7(構造体1) - Project_OKI’s diary
・C言語基礎知識8(enum:列挙型) - Project_OKI’s diary
・C言語基礎知識9(typedef) - Project_OKI’s diary
組み込みC言語: