
看到上邊的圖片里的代碼了嗎? 對這段 char* message[]={“hello”,“world”}; 有感覺嗎?
--數組
--聲明一個數組 當我們需要很多很多的數據時,比如記錄一個班同學的數學成績,一個月的溫度,當然常常是更多。那么這個時候還像前邊說的那樣一個一個的聲明就很困難了。那么就需要一個新的工具來解決這個問題。 數組是由一系列類型相同的元素構成的。就像聲明一個整數型一樣,可以使用聲明來告訴編譯器您需要一個數組。 int states[50];
這個語句的意思是聲明了一個50個整數的數組,批量聲明是不是效率高了。方括號[]表示States這個標識符表示數組,方括號里邊的數字說明這個數組最多能包含元素的數量。
states[0]是數組states的第一個元素,states[49]是第50個元素。告訴一個程序員數一百個數,偉大的程序員同志們一般都會從0數到99,哈哈,開個玩笑。 自然還可以這樣聲明 char code[12];//12個字符的數組 float candy[365];//365個浮點數的數組 --給數組賦值 同樣像我們之前聲明一個整數型的量,那之后一定要給它賦值,不然我何苦聲明呢是吧。那聲明了一個數組當然也要賦值。 參照我們之前了解的單個數值變量(有時也稱為標量)的聲明中用表示式來賦值,如下所示: int a=1; 相似,我們可以通過下面的方式對數組賦值: int a[8]={0,1,2,3,4,5,6,7}; 可以使用花括號{}括起來的一系列數值來初始化數組。數值之間用逗號隔開,在數值和逗號之間可以使用空格。 這樣數組a的第一個元素a[0]=0,依次類推。 除了這樣賦值我們還能逐個的賦值,下邊就用一段代碼來舉個例子: #include <stdio.h> #define SIZE 50//把SIZE宏定義為50 int main (void)//聲明主函數 { /*聲明整數型數值count、數組evens*/ int count,evens[SIZE]; /*for循環*/ for(count=0,count<SIZE;count++)
/*通過循環執行來賦值*/ evens[count]=2*count;
} 大家可以自己先感受一下,學過C語言的同學讀起來不應該困難。 --多維數組 例如要記錄5個班每班30人的成績的學生數學成績,要聲明怎樣的數組呢?其實我們可以聲明一個150個變量,使每一個變量代表一個學生的數學成績,可那就體現不出5個班級了。但是我們也可以這樣,可以設計5個數組,每個數組包括30個元素,這是一種比較笨的方法,而且如果要記錄50個班的那就不合適了。 C語言為我們提供了這樣的方法,我們可以使用一個數組,即主數組包含5個元素,每個元素代表一個班級。代表一個班級的元素是包含30個元素的數組。這種數組的數組,就是二維數組。可以用下面的方式聲明: int sf[5][30];//數學分數,我就簡稱sf了 賦值舉例: int a[2][3]={ {3,1,2}, {3,2,1}, }; 如果第一列表中只要一個數, int a[2][3]={ {3}, {3,2,1}, }; 如果第一列表中只要一個數,則第一含只有第一個元素得到賦值,最后兩個元素的被默認為初始化的0,。如果列表中的數多于3個,系統會報告錯誤,而且不影響下一行的賦值。
--函數指針
函數指針是指向函數地址的指針。就是利用利用該指針可以知道函數在內存中的位置。因此,也就可以利用函數指針調用函數。函數的聲明方法是:
類型 (*指針變量名)(函數的參數列表) 比如我們需要對2個變量進行聲明,第一個是函數指針fp,該函數指針變量指向一個入口參數為一個整數,返回值為另一個整數的函數;第二個是函數指針數組fp_array[],這個數組的每個元素都是一個函數的指針,這些函數指針指向入口參數為一個整數,返回值為指向整數的指針的函數,聲明如下: /*聲明了一個函數指針變量fp,它指向一個入口參數與返回值都是整數的函數*/ int (*fp)(int); /*聲明了一個函數指針數組fp_array[],它的每個元素都是指向一個入口為整數,返回值為整數指針的函數*/ int *fp_array[10](int); 大家要注意:在函數指針聲明中,函數的指針變量名必須寫在一個括號內,如果我們省略了這個括號,那么這個聲明的含義就完全不同,如: int *fp(int); 上邊的例子中第一行聲明是一個函數fp(),該函數有一個整數型的參數并返回一個指向整數的指針。這是因為函數調用了運算符“()”的優先級高于運算符“*”,編譯器首先會認為fp(int)是一個運算單位,這顯然是一個函數。而對函數返回值做了取內容運算*(pf(int))的結果是一個整數int,因此fp是一個以整數型為入口參數、返回值為指向整數的指針的函數,而不是我們希望的聲明得到的函數指針了。
用了六周的時間,介紹了一點點嵌入式編程C語言最基礎的東西,只是展現了一個很粗略很粗略的框架,如果能和大家自學的收獲有點共鳴或者讓你有了自學C語言的想法,那就是最好的效果了。有同學說越來越難懂了,那是當然了,一眼就能看懂的那是韓劇,這畢竟工科知識,大家堅持堅持。但工科知識也不是硬推硬算、死記硬背,重要的是理解。
以下是本系列教程文章列表:歡迎大家踴躍討論,有問題可在51黑論壇回帖提出.
C語言基礎教程(1):http://www.zg4o1577.cn/bbs/dpj-41177-1.html C語言教程(2)-關鍵字 變量:http://www.zg4o1577.cn/bbs/dpj-41178-1.html C語言教程(3)-控制語句:http://www.zg4o1577.cn/bbs/dpj-41179-1.html C語言教程(4)-運算符:http://www.zg4o1577.cn/bbs/dpj-41180-1.html C語言教程(5)-函數:http://www.zg4o1577.cn/bbs/dpj-41181-1.html C語言教程(6)-數組與函數指針:http://www.zg4o1577.cn/bbs/dpj-41182-1.html
51單片機教程:http://www.zg4o1577.cn/bbs/mcu-xuexi-1.html STM32教程:http://www.zg4o1577.cn/bbs/dpj-41167-1.html
|