對面試既愛又恨,每次面試都像是經歷了一次洗禮,緊張又興奮,大腦高速運轉,最重要的是每次都會發現自身的許多不
足,這樣才能不斷的提高自我。下面是面試遇到的乙個問題,還挺有意思的。
#include
void getmemory(char *p)
p = (char *)malloc(100);
void test(void)
char *str = null;
getmemory(str);
strcpy(str,"hello world");
printf(str);
int main()
test();
system("pause");
return 0;
輸出什麼?
思考一下不要急著向下翻哦。
解答:剛看到這道題的時候,很容易被誤導,
首先會覺得指標型別做引數,值被修改,其實際值也會變,
那麼給函式引數指標分配記憶體呢?
其實相當於修改的是引數指標本身,函式釋放後指標實際的指向是不會變的。
所以這裡需要使用雙指標才可以實現想要的效果。
實際執行這段程式會在strcpy(str,"hello world");位置出現異常。
**需要修改如下:
#include
void getmemory(char **p)
*p = (char *)malloc(100);
void test(void)
char *str = null;
getmemory(&str);
strcpy(str,"hello world");
printf(str);
int main()
test();
system("pause");
return 0;
c c 關於記憶體的思考 一
1.void getmemory char p void test void 請問執行test函式會有什麼樣的結果?答 程式崩潰。因為getmemory並不能傳遞動態記憶體,test函式中的 str一直都是 null。strcpy str,hello world 將使程式崩潰。2.char getm...
C 記憶體分配思考
引用 楊麗慧 的 c 記憶體分配的五種方法 也不知道是不是她,當初我拷貝這篇文章時沒注意作者是誰,現在需要引用,特意找了一下,如果不對,請指正。正文 在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚...
關於C 多型的思考
c 中,可以如下定義 base father new derived father 是基類引用,指向子類物件,這一點有點類似c 該引用的使用模式如下 先說結論 測試 如下 using logging class base public virtual void show2 public void m...