久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2855|回復: 0
打印 上一主題 下一主題
收起左側

C語言教程(6)-數組與函數指針

[復制鏈接]
跳轉到指定樓層
樓主
ID:99082 發表于 2015-12-10 03:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

看到上邊的圖片里的代碼了嗎?

對這段

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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品我不卡 | 欧美日韩久久精品 | 欧美一区二区三区四区在线 | 成人免费激情视频 | 精品国产区 | 日本视频在线播放 | 红桃视频一区二区三区免费 | 91av免费观看 | 农夫在线精品视频免费观看 | 欧美一区二区三区四区五区无卡码 | 精品欧美一区二区三区 | 国产免费一二三区 | 九九热热九九 | 国产精品久久久久久238 | 国精日本亚洲欧州国产中文久久 | 午夜一区二区三区在线观看 | se婷婷| 精产国产伦理一二三区 | 日本高清aⅴ毛片免费 | 天天躁日日躁狠狠躁2018小说 | 久久精品国产一区二区电影 | 黄色免费在线观看网站 | 免费一级毛片 | 中文日韩在线 | av在线播放网址 | 狠狠干综合视频 | 亚洲精品国产一区 | 伊色综合久久之综合久久 | 成年人在线观看 | 日本精品视频 | 毛片入口| 国产精品成人国产乱 | 亚洲一区精品在线 | 久久国产一区 | 亚洲精品自在在线观看 | 亚洲一区二区在线视频 | 中文字幕国产 | 欧美中文在线 | 久久久入口 | 国产丝袜一区二区三区免费视频 | 日韩区 |