[問題] 指標傳入副函式做malloc 一問
int set_val(char *a){
a=(char *)malloc(sizeof(char)*4);
*a='x';
*(a+1)='y';
printf("%s\n",a);
return 0;
}
int main(){
char * a=NULL;
set_val(a);
printf("%s",a);
return 0;
}
各位版友大家好
有個問題想請問各位先進 我使用VC2010
我本來預期兩個printf都會一樣 都是印出xy
1.但上列程式 第一個printf(在set_value裡) 印出xy
但第二個printf 卻是NULL(在mail裡) why??
malloc 的記憶體是放在heap 應該不是被收回去啊! 那怎麼會是NULL
何況我傳指標不就算是call by reference ?
這是新手十戒裡的嗎? 囧
2.另外我知道這樣寫法好像不大好
正確地的作法 是在main()裡就malloc 這樣程式就沒問題
這樣的做法是不是也才能符合 "malloc 和free最好在同一個函式內"的說法?
無論如何 先謝謝大家!!
--
CyberPanel 5000CP 換 NT.500
http://myurl.com.tw/05bd
EmailCash 5000e 換 NT.500
http://myurl.com.tw/rgdq
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.205.201
→
11/19 19:49, , 1F
11/19 19:49, 1F
→
11/19 19:51, , 2F
11/19 19:51, 2F
→
11/19 19:55, , 3F
11/19 19:55, 3F
→
11/19 19:56, , 4F
11/19 19:56, 4F
→
11/19 19:56, , 5F
11/19 19:56, 5F
→
11/19 19:56, , 6F
11/19 19:56, 6F
→
11/19 19:57, , 7F
11/19 19:57, 7F
→
11/19 19:58, , 8F
11/19 19:58, 8F
→
11/19 19:59, , 9F
11/19 19:59, 9F
→
11/19 20:19, , 10F
11/19 20:19, 10F
→
11/19 20:20, , 11F
11/19 20:20, 11F
→
11/19 20:37, , 12F
11/19 20:37, 12F
→
11/19 20:40, , 13F
11/19 20:40, 13F
→
11/21 13:58, , 14F
11/21 13:58, 14F
→
11/21 13:58, , 15F
11/21 13:58, 15F
推
11/25 03:14, , 16F
11/25 03:14, 16F