日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

下述程序有什么问题?

發布時間:2025/6/15 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 下述程序有什么问题? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下述程序有什么問題?
#include<string.h>
#include<stdio.h>?
#include<stdlib.h>?

void getmemory(char*p) ?
{ ? ?? ??
p=(char *) malloc(100); ? ?
strcpy(p,"hello world"); ?

} ?

int main( )?
{ ? ?
? ?
?char *str=NULL; ? ?
?getmemory(str); ?
?printf("%s\n",str); ??
?free(str); ? ?
?return 0; ??
}
解析:
1.getmemory 函數中對于指針的值來說是值傳遞,也就是說函數定義了一個臨時變量p,p的值與str的值相同,都指向同一個地址,但是在p=(char*) malloc(100);
這句中,系統開辟了另一個空間,p指向了這個新的空間,也就是說,p和str病不指向同一個地址了,那么,接下來對×p的操作也就和str無關了,所以str的值始終沒有變過,一直為null。
2.函數傳入的是指針p的一個副本,而實參str沒有真正被修改。因此輸出為空,main函數正常返回。
為使題目功能可行,
法一:按引用傳參
void getmemory(char* &p) ?
法二:使用指針的指針

#include<string.h>
#include<stdio.h>?
#include<stdlib.h>?
void getmemory(char** p)?
?{ ? ?
? ?
? *p=(char *) malloc(100);?
? ?
? ? strcpy(*p,"hello world");?
?
} ?

int main( )?
{ ? ?
char *str=NULL; ? ?
?
getmemory(&str); ? ?
??
printf("%s\n",str); ??
? ?
free(str); ? ?
? ?
return 0; ??

}?

總結

以上是生活随笔為你收集整理的下述程序有什么问题?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。