當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 數(shù)組怎么用?學(xué)霸告訴你怎么用數(shù)組
數(shù)組:數(shù)據(jù)的組合
1、是構(gòu)造類型
2、通過下標(biāo)個(gè)數(shù)確定數(shù)組是一維數(shù)組還是二維數(shù)組
3、數(shù)組內(nèi)的元素的類型必須保持一致
4、在內(nèi)存空間中是連續(xù)的
一維數(shù)組:
一般定義形式
數(shù)據(jù)類型:(數(shù)組內(nèi)元素的數(shù)據(jù)類型)數(shù)組名[元素的個(gè)數(shù)] int a[3]; 數(shù)組類型 int [3]
數(shù)組的初始化:
完全的初始化:
int a[3]={1,2,3};
int a[ ]={1,2,3};默認(rèn)為完全初始化不完全初始化
int a[3]={1};//其余元素默認(rèn)為零不初始化:
則里面的值為隨機(jī)數(shù)
對static數(shù)組元素不賦初值,系統(tǒng)會(huì)自動(dòng)賦以0值。局部變量的存儲(chǔ)位置會(huì)從棧區(qū)換為數(shù)據(jù)區(qū)
如何引用數(shù)組內(nèi)元素?數(shù)組名[下標(biāo)] 注意下標(biāo)從0開始
數(shù)組的數(shù)據(jù)類型:例如:int a[3]:的數(shù)據(jù)類型為int [3] 通過sizeof可以測量數(shù)據(jù)類型的大小
把元素變量當(dāng)做元素個(gè)數(shù)時(shí)不能夠?qū)?shù)組進(jìn)行初始化,編譯器會(huì)報(bào)錯(cuò)。即不能用變量定義數(shù)組維數(shù)。
int n = 3;
int a[n]={1,2,3};(✖) int a[n];(✔)
數(shù)組越界可能出現(xiàn)的問題
1、打印辣雞值
int main (int argc ,const char *argv[])
{
int a[3]={1,2,3};
int i ;
for(i=0;i<5;i++)
{
printf(“%d ”,a[i]);
}
}
輸出 1 2 3 3 41234244 在棧區(qū)中保存數(shù)據(jù)是連續(xù)的 數(shù)組a后保存的是變量i的值, 所以在輸出完數(shù)組a中三個(gè)值之后下一個(gè)輸出為i值。
2、段錯(cuò)誤segmentation fault(core dumped)
int main (int argv ,const char *argv[])
{
int a[3]; int i;
for(i=0;i<20;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<20;i++)
{
printf("%d",a[i]);
}
}
越界可能非法訪問內(nèi)核數(shù)據(jù)
(gcc -g 調(diào)試作用 找段錯(cuò)誤出現(xiàn)在哪兒)
String that is used as an exampel”
字符數(shù)組 字符串打印
puts和printf的%s打印字符串都是遇‘’停止
字符串長度函數(shù) strlen
功能:測量字符串長度
返回值:字符串長度,不包括''. 參數(shù):字符串或者字符串?dāng)?shù)組數(shù)組名
#include
size_t strlen (const char *s)
字符串拷貝函數(shù) strcpy功能:字符串拷貝#include
char *strcpy(char *dest,const char *str)
注意:1、目標(biāo)空間足夠大,否則會(huì)出現(xiàn)數(shù)組越界問題
2、連同‘’一起拷貝
3、不能實(shí)現(xiàn)字符串自拷貝
字符串連接函數(shù) strcat
功能:將兩個(gè)字符串拼接在一起#include
char *cstrcat(char *dest,const char *src) 注意:1、前面字符串的''開始覆蓋。
2、目標(biāo)空間足夠大。
3、不能實(shí)現(xiàn)字符串自連接。
字符串比較函數(shù) strcmp
功能:比較兩個(gè)字符串是否相同,其實(shí)是將兩個(gè)字符串對應(yīng)的字符一一比較,當(dāng)遇到字符的
ascII值不同或者遇到''則停止比較#include
char *strcat(char *dest ,char *src) 返回值:1、當(dāng)s1>s2,返回正整數(shù) 1
2、當(dāng)s1=s2,返回0
3、當(dāng)s1
二維數(shù)組
一般形式
數(shù)據(jù)類型(數(shù)組內(nèi)元素的數(shù)據(jù)類型) 數(shù)組名[行標(biāo)][列標(biāo)] int a[2][3];
初始化(同一維數(shù)組) 完全初始化
不完全初始化 引用二維數(shù)組內(nèi)元素
數(shù)組名[行標(biāo)][列標(biāo)] 行標(biāo)列標(biāo)也是從0開始二維數(shù)組你的數(shù)據(jù)類型:int [2][3]
二維數(shù)組鎖占空間的大小 sizeof(a)或者sizeof(int [2][3])
楊輝三角
二維數(shù)組
一般形式
數(shù)據(jù)類型(數(shù)組內(nèi)元素的數(shù)據(jù)類型) 數(shù)組名[行標(biāo)][列標(biāo)] int a[2][3];
初始化(同一維數(shù)組) 完全初始化
不完全初始化 引用二維數(shù)組內(nèi)元素
數(shù)組名[行標(biāo)][列標(biāo)] 行標(biāo)列標(biāo)也是從0開始二維數(shù)組你的數(shù)據(jù)類型:int [2][3]
二維數(shù)組鎖占空間的大小 sizeof(a)或者sizeof(int [2][3])