電子書籍の厳選無料作品が豊富!

プログラムの多くは、仮引数のポインタを一度ローカル変数に格納して使っていますが、なぜでしょうか?データが壊れてしまったりするのでしょうか・・・

typedef struct _LIST{
int value;
struct LIST *next;
struct LIST *prev;
}LIST,*LIST_PTR;

void func(LIST_PTR list, char *str){
LIST_PTR wk_list;
char *wk_str;
wk_list = list;
wk = str;

A 回答 (1件)

質問にある例だと、func()の中でwk_listの値が変化して、しかも元々のlistの値が後で必要になる場合にそういうことをする必要があります。


逆に言うと、wk_listの値がfunc()の中で変化しないとか、元々のlistの値を後で使うことはないとかの条件であれば、ローカル変数で受ける必要はありません。
ポインタ以外の変数の場合も同じ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
データ領域とかも関係しているのかな、なんて変に考えこんでました。

お礼日時:2011/02/07 08:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!