C語言面試10道題,附帶答案,來測試你C語言的掌握程度

2019-08-12     C語言編程開發

第1題: 各個數據類型與零值比較 特別是float時


C語言


第2題: 數組做函數形參傳遞是

其本質是指針 而非數組名 其大小sizeof為4


C語言


第3題:各種指針 數組 函數時的定義問題 及分析步驟


C語言


第4題: const修飾不能改變以及對他進行改變

以及對字符串常量進行修改是的段錯誤


#include

void fun(int *p);

void funchar(char *p);

int main()

{

//test1

//const char *p = "aaa";

//*(p+1) = 'A';// [Error] assignment of read-only location '*(p + 1u)'

//printf("%s\\n",p);

/*test2

char *p = "aaa";//他是存放在代碼區的

*(p+1) = 'A';10 12//[Warning] deprecated(反對) conversion from string constant to 'char*' [-Wwrite-strings]

printf("%s\\n",p);//可以運行編譯但是直接閃退

*/

/*test3 該測試在Windows下編譯結果還是5 在linux下gcc編譯器結果為6

const int a = 5;

fun((int *)&a);

printf("%d\\n",a);

*/

/*test4*/

const char *p = "aaa";//他是存放在代碼區的

//funchar((char**)&p);二級指針

//funchar((char*)&p);兩個結果都是 Segmentation fault (core dumped)

printf("%s\\n",p);//可以運行編譯但是直接閃退

return 0;

}

void funchar(char *p)

{

*(p+1) = 'A';

}

void fun(int *p)

{

*p = 6;

}


第5題:c和c++ 中的struct有什麼不同?

【標準答案】

c和c++ 中struct的主要區別

c中的struct不可以含有成員函數,而c++ 中的struct可以。

c++ 中struct和class的主要區別在於默認的存取權限不同,

struct默認為public ,而class默認為private


第6題:關於子函數調用maollc 主函數free問題研究

本質就是 函數形參復值的是存儲空間的值 而非地址。

題目

void getmemory(char *p)

{

p=(char *)malloc(100);//在這裡申請

strcpy(p,「hello world」);

}

int main( )

{

char *str=NULL;

getmemory(str);

printf(「%s/n」,str);

free(str);

return 0;

}

會出現什麼問題?

【標準答案】

程序崩潰,getmemory中的malloc 不能返回

動態內存,free ()對str操作很危險。


C語言

#include

void getmemory(char *p)

{

printf("%p\\n",p);

//printf("%s\\n",*p);//*p就表示字符了......format 『%s』 expects argument of type 『char *』,

//p=(char *)malloc(100);//在這裡申請

//strcpy(p,「hello world」);

}

int main( )

{

char *str = "aaaaa";

char *str1 = NULL;//表示str1存儲的是null,

printf("%p\\n",str1);

getmemory(str1);//則傳遞過去 則p存儲的也是null //再進行malloc則表示&p形參的這個地址空間中存儲的是malloc返回回來的地址。然後子函數結束 p指針釋放內存 malloc地址丟失 。

//printf(「%s/n」,str);

//free(str);

return 0;

}


第7題:沒有結束標誌的字符串數組

題目

char szstr[10];

strcpy(szstr,」0123456789」);

產生什麼結果?為什麼?

【標準答案】

長度不一樣,出現段錯誤。

C語言


第8題: 數組和鍊表的區別?

數組屬於順序存儲的線性表 訪問塊 大小限定

鍊表屬於鏈式存儲的線性表 刪除插入塊 大小無限制

【標準答案】

數組:數據順序存儲,固定大小;

鍊表:數據可以隨機存儲,大小可動態改變


第9題:

void main()

{

char aa[10];

printf(「%d」,strlen(aa));

}

會出現什麼問題?列印結果是是多少?

strlen是以』\\0』為結束標誌的計數函數

sizeof就是與定義的數據類型有關的

【標準答案】

sizeof()和初不初始化,沒有關係,

strlen()和初始化有關,列印結果值未知。


第10題 結構體內存對齊問題

給定結構struct A

{

char t:4; ——————1

char k:4; ——————1

unsigned short i:8; ——————2

unsigned long m; ——————4

}; 問sizeof(A) = ?

【標準答案】8

struct name1{

char str; ——————2//內存對齊

short x; ——————2

int num; ——————14

} ;求sizeof(name1)?

【標準答案】8

struct name2{

char str; ——————4

int num; ——————4

short x; ——————2錯的 應該是4

}; 求sizeof(name2)?

【標準答案】12

C語言

加C/C++學習交.流群獲取C語言、C++、Windows高級編程,MFC框架編程、QT框架編程,Linux應用程式開發,Linux內核研究等系統學習路線,更有進階乾貨的直播免費學習權限 ,都是大牛帶飛 讓你少走很多的彎路的 群...號是 546912356

文章來源: https://twgreatdaily.com/zh-my/yG8xpmwBvvf6VcSZx_Mv.html