關於指標常用的面試題的解析

2021-05-22 01:04:25 字數 636 閱讀 2951

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...