ホーム » スタッフ » 斉藤徹 » 構造体の配列渡しの質問

2014年2月
« 1月   3月 »
 1
2345678
9101112131415
16171819202122
232425262728  

最近の投稿(電子情報)

アーカイブ

カテゴリー

構造体の配列渡しの質問

構造体を使ったプログラムで、構造体のデータを配列全部を渡すのか、 配列の1つを渡すのか…の違いが判らずに混乱している人がいるので、 簡単なサンプルプログラムを示す。

// 構造体のサンプル
struct A {
int data ;
} ;
// 構造体の全部を渡す場合
void foo( struct A* p ) {
// struct A p[]
// 引数宣言は上のように書いても同じ。
for( int i = 0 ; i < 100 ; i++ ) {
p[i].data = ... ;
// 上の1行は下の2つでも同じ意味
// (*(p+i)).data = ... ;
// (p+i)->data = ... ;
}
}
// 構造体の1件を渡す場合
void baa( struct A* p ) {
p->data ....
}
void main() {
// 局所的な配列
struct A a[100] ;
// 配列全体を渡す(a[]の先頭アドレス)
foo( a ) ;
// 配列のi番目を渡す
for( int i = 0 ; i < 100 ; i++ ) {
bar( &a[i] ) ;
}
}