void getmemory(char *p)
void test(void)
請問執行test函式會有什麼樣的結果?
答:程式崩潰。因為getmemory並不能傳遞動態記憶體,test函式中的str一直都是null,即使p重新指向新的位址,但原來的str指標指向的位址不變。
strcpy(str,"helloworld");將使程式崩潰。
char *getmemory(void)
void test(void)
請問執行test函式會有什麼樣的結果?
答:可能是亂碼。因為getmemory返回的是指向「棧記憶體」的指標,該指標的位址不是null,但其原先的內容已經被清除,新內容不可知。
void getmemory2(char **p, int num)
void test(void)
請問執行test函式會有什麼樣的結果?
答:(1)能夠輸出hello(2)記憶體洩漏
引數p為指標的指標,存放指標變數str的位址,*p = str,使用malloc後,*p內容被改變,
當然str也被改變了,所以str指向malloc分配的記憶體,自然能夠輸出「hello」,
在test函式返回前使用delete str;str = null就ok了。
面試題 關於指標
面試題 下列c 程式會在哪一行崩潰?struct s main 分析 int p s.i時,一直到p 0 4,p 1 3的時候,p始終等於 s.i。s.p p 建立了如下的關係 s.p存了p的值,也即 s.i,s.p 1 相當於 s.i 1 即s.i的位址加1.也就是s.p.s.p 1 和s.p其實...
面試題 指標
一 指標 1 利用指標實現兩數交換 include using namespace std void swap1 int p,int q void swap2 int p,int q void swap3 int p,int q void swap4 int p,int q void swap5 i...
關於指標的乙個面試題
前幾天,去乙個公司面試實習生,遇到下面這個題 void test void void get memory char p 問此段 的執行結果?如果有錯誤怎麼改,為什麼?拿到這道題的時候,感覺都對著呢,剛開始以為是malloc 申請完空間,函式結束釋放了,可後來想到如果malloc 申請的空間沒有fr...