嵌入式軟體工程師面試題1

2022-05-03 03:42:10 字數 1119 閱讀 3928

1 #include 2

using

namespace

std;34

void getmemory(char *p, int

num)78

int main(void

)

問題出在void getmemory(char *p, int num)裡面,這裡面的*p其實是main()裡str的乙個副本,編譯器總要為函式的每個引數製作臨時副本。在這裡,p申請新記憶體,只是把p所指的記憶體位址改變了,但是str沒有變。因為getmemory()沒有返回值,所以str並不指向p申請的那個記憶體,所以getmemory()不能輸出任何東西。而且,每次執行getmemory()都會申請乙個記憶體,但是記憶體沒有釋放,會造成記憶體洩露。

1 #include 2

using

namespace

std;34

void getmemory(char **p, int

num)78

int main(void

)

這樣的話,程式可以執行成功。列印出來發現,*str, str, &str的值分別是h, hello, 0x0012ff7c,str是字串的值,*str是str首字元,&str是str的位址值。

「指向指標的指標」不好理解,可以用函式返回至來傳遞動態記憶體,如下:

1 #include 2

using

namespace

std;34

char* getmemory(char *p, int

num)89

int main(void

)

注意這裡面的記憶體還是沒有釋放的,使用的時候請注意。

下面來推廣一下,看看整形變數怎麼樣:

1 #include 2

using

namespace

std;34

void getmemory(int *p)78

int main(void

)

getmemory()把v的位址傳了進來,*p是位址裡的值,v是副本。通過直接修改位址裡的值,不需要返回值,也把v修改了,因為v所指位址的值發生了改變。

嵌入式軟體工程師面試題

embedded software design engineer 1 讀程式段,回答問題 int main int argc,char argv a 寫出程式輸出 b 在乙個可移植的系統中這種表示式是否存在風險?why?include stdio.h int a 0 int b static ch...

嵌入式軟體工程師筆試題

一 選擇題 1 定義函式 時,預設函式的型別宣告,則函式型別取預設型別 a.void b.char c.float d.int 參 d 二 簡答 1 多型類中的虛函式表是compile time,還是run time時建立的?參 虛函式表是在編譯期就建立了,各個虛函式這時被組織成了乙個虛函式的入口位...

嵌入式軟體工程師面試歷程

記錄這個月的面試經驗和其中些許對於工作的看法。一 廣州優利康沛科技 這是我向公司提出離職申請,還沒離職就去面試的一家公司。該公司沒有筆試題,由乙個資深工程師直接面試我,都是問些基礎知識,例如 怎麼理解c語言中的定義和宣告?是否使用過實時作業系統?sizeof函式和strlen函式的區別?系統排程的原...