ポインタ引数
構造体のポインタを関数に渡していろいろ書き換えたりする。
#include <stdio.h>
typedef struct st{
int val_int;
hoge *p_hoge;
}TYPE;
void set_and_show(TYPE *p){
p->val_int = 100; // 値の書き換えはこれでおk
printf("%d", p->val_int); // 値の表示もこれでおk
return;
}
int main(void){
// 始めから開き直って構造体のポインタを扱ってると楽(どうせ構造体は配列として扱うことが多い。)
TYPE *p_str = (TYPE *) malloc( sizeof(TYPE) );
// ポインタなのでそのまま渡せば自動的にアドレス渡しになる。
set_and_show(p_str);
// 使い終わったら解放することを忘れずに。
free(p_str);
return 0;
}
参照渡しの効用
あからさまにポインタ渡ししてないのに、
1. 関数定義内で普通の変数のように書ける。
2. 呼び出しも値渡しのように書ける。
// 宣言と定義
void rewrite( int &a )
{
a = 100;
}
// 使用
int main()
{
int a = 10;
cout << a << endl;
rewrite( a );
cout << a << endl;
return 0;
}
最終更新:2010年01月07日 11:07