mallocのスコープ
訂正の文章を末文に書いてます。すみませんおかしいので最終末文見てください。
こんなプログラムを作成しました。
mallocのスコープをテストしてみました。
#include
#include
#includetypedef struct param{
int id;
char cd[2+1];
} param;param *test(param* p){
p=(param*)malloc(sizeof(struct param)*3);
p[0].id=10;
strcpy(p[0].cd ,"11");
printf("func p:%d\n",p[0].id);
printf("func p:%s\n",p[0].cd);
return p;
}int main(int argc, char *argv[]) {
param *p1,*p2;
p1=NULL;
p2=NULL;
p2=test(p1);if (p1 != NULL) {
printf("p1:%d\n",p1[0].id);
printf("p1:%s\n",p1[0].cd);
}else{
printf("p1:NULL\n");
}if (p2 != NULL) {
printf("p2:%d\n",p2[0].id);
printf("p2:%s\n",p2[0].cd);
}else{
printf("p2:NULL\n");
}
return 0;
}
結果がこうなるって知ってました?
func p:10
func p:11
p1:NULL
p2:10
p2:11
引数での値渡しはできないんですね。
Mac(XCode) WinXP(VS2008)で確認しました。
Sickly Life はてな版
http://d.hatena.ne.jp/itiri/20111120/1321780179
↑
ここの方に、ぼろくそ書かれたのですが、間違ってました。
もう少し和らいで書いていただきたかったなぁ。。。。(^^;
つか、コメントに間違ってますよぐらい書いていただければ。。。。
私わかってなかったんで。。。
構造体の配列でしたよねぇ。ポインタのポインタにしなきゃならないですよね。
あははは。つうことで、すみませんでした
うーん。ちゃんと勉強しなければ。。。。だからまともに作れないときあるんだな。。。。orz