ポインタと参照渡し。
http://builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm
これはC++のほうがやりやすいと思う。mfcオレオレで書く
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/wcemfc/htm/cstring_8.asp
元ソース
構造体全コピーかかるため遅い
hoge内でやりたいほうだい書き換えなどやってもmain内のsには影響無し
void main(void) { CString s("abcdef"); hoge(&s); } void hoge(CString str) { ASSERT(str.Find('c') == 2); }
ポインタにしてアドレス渡すだけにする
アドレス渡すだけなので速い
main内のsに影響
メンバ参照の書き換え等の作業が必要、呼び出しもとをアドレス渡しと明示しないとだめ
void main(void) { CString s("abcdef"); hoge(&s); } void hoge(CString *str) { ASSERT(str->Find('c') == 2); }
参照で渡す
アドレス渡すだけなので速い
main内のsに影響
元ソースそのまま使える
void main(void) { CString s("abcdef"); hoge(s); } void hoge(CString &str) { ASSERT(str.Find('c') == 2); }
わざわざ、normalなCせんでも、Javaな人ならclassで説明すれば良かったのに...
って
C言語では呼び出し元の変数を変更する「参照呼出し」という機能がない
っ('A`)... C++で書けばよかったのに...乙('A`)