Loading...
嵌入式的面試題
無意間看到一篇
博文
,覺得自己也應該總結一下。就從他的基礎上面開始吧。
題目
如何在C中初始化一個字元陣列。
如何在C中為一個陣列分配空間。
如何初始化一個指標陣列。
如何定義一個有10個元素的整數型指標陣列。
s[10]的另外一種表達方式是什麼。
GCC3.2.2版本中支援哪幾種編程語言。
要使用CHAR_BIT需要包含哪個頭檔。
對(-1.2345)取整是多少?
如何讓局部變數具有全局生命期。
C中的常量字串應在何時定義?
如何在兩個.c檔中引用對方的變數。
使用malloc之前需要做什麼準備工作。
realloc函數在使用上要注意什麼問題。
strtok函數在使用上要注意什麼問題。
gets函數在使用上要注意什麼問題。
C語言的詞法分析在長度規則方面採用的是什麼策略?
a+++++b所表示的是什麼意思?有什麼問題?
如何定義Bool變數的TRUE和FALSE的值。
C語言的const的含義是什麼。在定義常量時,為什麼推薦使用const,而不是
#define
。
C語言的volatile的含義是什麼。使用時會對編譯器有什麼暗示。
解答
1. 如何在C中初始化一個字元陣列。
這 個問題看似很簡單,但是我們要將最簡單的問題用最嚴謹的態度來對待。關鍵的地方:初始化、字元型、陣列。最簡單的方法是char array[];。這個問題看似解決了,但是在初始化上好像還欠缺點什麼,個人認為:char array[5]={'1','2','3','4','5'};或者char array[5]={"12345"};或者char array[2][10]={"China","Beijing"};也許更符合“初始化”的意思。
2. 如何在C中為一個陣列分配空間。
最簡單的方法是:char array[5];意思是分配給陣列array一個5個位元組的空間。但是我們要知道在C中陣列其實就是一個名字,其實質含義就是指標,比如char array[];是到底分配的多少空間?所以我們要將其分成為兩種不同的形式給出答案:
一種是棧的形式:char array[5];
一種是堆的形式:char *array; array=(char *)malloc(5);//C++: array=new char[5];
堆和棧的含義其實我也沒弄太透徹,改天明白了再發一篇。
我們要明白的是,第一種形式空間分配的大小可能會受作業系統的限制,比如windows會限制在2M;第二種形式成空間分配很靈活,想分配多少分配多少,只要RAM夠大。
3. 如何初始化一個指標陣列。
首先明確一個概念,就是指向陣列的指標,和存放指標的陣列。
指向陣列的指標:char
(*array)[5];含義是一個指向存放5個字元的陣列的指標。
存放指標的陣列:char *array[5];含義是一個陣列中存放了5個指向字元型資料的指標。
按照題意,我理解為初始化一個存放指標的陣列,char *array[2]={"China","Beijing"};其含義是初始化了一個有兩個指向字元型資料的指標的陣列,這兩個指標分別指向字串"China"和"Beijing"。
4. 如何定義一個有10個元素的整數型指標陣列。
既然只是定義而不是初始化,那就很簡單且沒有爭議了:int *array[10];。
5. s[10]的另外一種表達方式是什麼。
前面說過了,陣列和指標其實是資料存在形態的兩種表現形式,如果說對於陣列s[],我們知道*s=s[0],那麼s[10]的另一種表達方式就是:*(s+10)。
6. GCC3.2.2版本中支援哪幾種編程語言。
Please turn on JavaScript to use Paper in all of its awesomeness. ^_^
題目
解答
1. 如何在C中初始化一個字元陣列。
2. 如何在C中為一個陣列分配空間。
3. 如何初始化一個指標陣列。
4. 如何定義一個有10個元素的整數型指標陣列。
5. s[10]的另外一種表達方式是什麼。
6. GCC3.2.2版本中支援哪幾種編程語言。