1樓:匿名使用者
第一種,p=(char*)malloc(100);簡單的給形參p賦值為新分配的記憶體地址,不過我們知道,改變形參的值,並不能改變實參的值,所以char *str=null;在getmemory執行之後,仍然是null指標。
第二種,char p="hello world";,這是堆疊上的臨時變數,只在函式呼叫到getmemory的時候有效,getmemory返回到test中的時候,已經無效了
第三種,無論如何,free之後的指標不應該繼續使用,它不會立即出錯,但是會在將來的某個時刻,毀掉你的程式。
第四中,通過傳遞地址呼叫,可以為str實際賦值為有效記憶體地址,通常都是這麼做的。
2樓:匿名使用者
#include
#include
#include
char *getmemory(int n)void test(void)
int main()
/*void *getmemory(void)void test(void) }*/
c語言這段括號匹配程式為什麼是錯的
標頭檔案 另存為seqstack.h typedef struct seqstack void stackinitiate seqstack s 初始化順序堆疊s int stacknotempty seqstack s 判順序堆疊s非空否,非空則返回1,否則返回0 int stackpush se...
C語言裡面陣列與指標的問題,為什麼陣列名與陣列名輸出是值,如圖所示
宣告裡定義了 int a 所以 a 是一維陣列語句裡,a 是 一維陣列 的名字,所以它代回表 a 陣列 的首地址。答 如果 宣告 是 int a 是簡單 變數,則 語句裡 a 表示 變數 a 的 值 語句裡,a 是 求 a 的地址。對於陣列a,它等於 a 0 或 a 0 也就等於 a 如果 宣告 是...
下面這個C語言題目答案為什麼是這樣的
ch 0 1 ch 1 2 ch 2 a 因為ch 2 a 在ch i 0 ch i 9 中為false,所以for迴圈實際上只執行一次,s 10 s ch i 0 10 0 1 0 1 因為做了i 2後跳到了字母a上,於是就結束迴圈了,不往後跳 下面這個c語言題是什麼鬼啊 首先題目有誤,不應該出現...