記2021.1.29廣州通則康威筆試
面試的是軟體工程師(c語言偏嵌入式)
總共6道題,30分鐘。
1.static全域性變數和普通全域性變數的區別?static區域性變數和普通區域性變數的區別?static函式與普通函式的區別?
經常會遇到的一道面試題。static修飾的全域性變數限定了該全域性變數的作用域,使其只作用於本模組,在本模組內有效;而普通的全域性變數可以可以作用於其他的模組,作用域更大。 static修飾的區域性變數儲存在記憶體資料段的靜態區,生命週期變長,作用域不變,在下次呼叫該變數時依舊使用上次的值。而普通的區域性變數儲存在棧區,在函式呼叫完後就會釋放,下次呼叫又重新申請。static函式限定了其作用域,使其只在本模組內可呼叫,在其他模組不行。而普通函式可以在其他的模組內呼叫。
2.寫出下面程式的執行結果。
int
main
(int argc,
char
**ar**)
考察關鍵字sizeof與函式strlen()以及字串,陣列,指標的一道基本的題目。
基於32位作業系統,sizeof()求指標所佔位元組,sizeof(陣列名)是求陣列所佔的位元組大小,strlen()求字串長度,遇到『\0』結束。輸出4,6,5,5。
3.指出下面程式所有可能出現的錯誤。
void
main()
找錯誤題,可能平時做的少,一開始有點懵,只找到:*ptr=8可能會引起段錯誤,因為指標ptr指向的空間未知,不安全。y=8358300000,感覺有點大,就寫了超出了int型的範圍,導致溢位。之後查了一下,確實超了幾倍。在32位作業系統中,ptr=y也超出了位址取值範圍。在64位作業系統中,ptr=y就沒有什麼問題了。這個判斷語句,弄成賦值語句,由於str指向的位址也不確定,也會導致段錯誤。最後返回值return 0和函式的無返回值衝突,引起警告。
感覺這個題,真的是每一句都有問題,指標定義時候最好指向確定位址,如char *p=null;不然是乙個野指標,不安全。
4.實現int mystrcpy(char *dest,const char *src),不使用strcpy及其他庫函式。
筆試經常遇到的乙個題。
int
mystrcpy
(char
*dest,
const
char
*src)
6.自定義函式,讀出文字檔案msg.txt所有內容,返回檔案的總位元組數。
忘了具體的。只答了fopen,fread,fclose三個函式,不記得裡面引數填啥。
之後複習了下
file *fopen(const char *path, const char *mode);
size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);
int fclose(file *stream);
int
fun(
void);
int i=
100, num=0;
file *fp=
null
; fp=
fopen
("./msg.txt"
,r);
if(fp==
null
)printf
("fopen error!\n");
while
(i==
100)
fclose
(fp)
;return num;
}
感覺還是不知道儲存的資料,需要先讀出有多少資料,之後再申請多大空間儲存內容才行。 C語言筆試題
有a b c d四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1 2 5 10分鐘,只有一支手電,並且同時最多只能兩個 人一起過橋。請問,如何安排,能夠在17分鐘內這四個人都過橋?答案 a b 2 mins 1 mins a c d 10 mins 2 mins b a b 2 mins 一共...
C語言筆試題
1 用標準c程式設計 找出整形數字1 100之間的素數,並列印出來。素數 除了1和自己本身可以被整除。include stdio.h main inti,j,n 0 printf 1 100之間的素數 n for i 2 i 100 i for j 2 jif i j 0 break if i j ...
c語言 筆試題6 25
unsigned short a 10 printf a u n a char c 128 printf c d n c 解析 a 0xfffffff5,int值 為 11,但輸出的是uint。所以輸出4294967285 第二題,c 0x10,輸出的是int,最高位為1,是負數,所以它的值就是0x...