數組怎么用?學霸告訴(su)你怎么用數組
時間:2018-08-22 來源:未知
數組(zu)(zu):數據的(de)組(zu)(zu)合
1、是構造(zao)類型
2、通(tong)過下標個數(shu)確定數(shu)組是一(yi)維數(shu)組還是二維數(shu)組
3、數(shu)組(zu)內(nei)的(de)元素的(de)類型必須保持一致
4、在(zai)內存(cun)空間中是(shi)連續的
一維數組:
一般定(ding)義形式(shi)
數(shu)(shu)據類型:(數(shu)(shu)組(zu)(zu)內元素的數(shu)(shu)據類型)數(shu)(shu)組(zu)(zu)名[元素的個數(shu)(shu)] int a[3]; 數(shu)(shu)組(zu)(zu)類型 int [3]
數組的初始化(hua):
完全的(de)初始化:
int a[3]={1,2,3};
int a[ ]={1,2,3};默認為完(wan)全初始(shi)(shi)化不完(wan)全初始(shi)(shi)化
int a[3]={1};//其余元素默認為零不初始化:
則里面的值為隨機數
對static數(shu)組元素(su)不賦初值,系統會(hui)自動賦以0值。局部變量(liang)的存儲(chu)位置會(hui)從棧區換為數(shu)據區
如何引用數組內元素?數組名[下標] 注意下標從0開始
數(shu)(shu)組的數(shu)(shu)據類(lei)(lei)型(xing):例(li)如:int a[3]:的數(shu)(shu)據類(lei)(lei)型(xing)為int [3] 通過sizeof可(ke)以(yi)測量數(shu)(shu)據類(lei)(lei)型(xing)的大小
把元(yuan)素(su)(su)變量(liang)當做元(yuan)素(su)(su)個數(shu)(shu)(shu)時不能夠對數(shu)(shu)(shu)組進(jin)行初始化,編譯器會(hui)報錯。即不能用變量(liang)定義數(shu)(shu)(shu)組維數(shu)(shu)(shu)。
int n = 3;
int a[n]={1,2,3};(✖) int a[n];(✔)
數組越界可能(neng)出(chu)現的(de)問題
1、打印辣(la)雞值
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 在(zai)棧區中保(bao)(bao)存(cun)數據是(shi)連續的 數組a后(hou)(hou)保(bao)(bao)存(cun)的是(shi)變量i的值(zhi), 所(suo)以(yi)在(zai)輸出完數組a中三個值(zhi)之(zhi)后(hou)(hou)下一個輸出為i值(zhi)。
2、段錯誤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]);
}
}
越界可能非法訪問內核數據
(gcc -g 調試作用 找段錯誤出現(xian)在哪(na)兒(er))
String that is used as an exampel”
字符(fu)數(shu)組 字符(fu)串打印(yin)
puts和printf的%s打(da)印字符串都是遇‘’停止
字(zi)符串(chuan)長度(du)函數 strlen
功能:測(ce)量字符串長度
返回值:字(zi)(zi)符串長度,不包括(kuo)''. 參數(shu):字(zi)(zi)符串或(huo)者字(zi)(zi)符串數(shu)組(zu)(zu)數(shu)組(zu)(zu)名
#include
size_t strlen (const char *s)
字符串拷貝函數 strcpy功能:字符串拷貝#include
char *strcpy(char *dest,const char *str)
注意:1、目標空(kong)間足(zu)夠大,否則會出現數組越界問題
2、連同‘’一(yi)起拷(kao)貝
3、不能實現字符(fu)串自(zi)拷(kao)貝(bei)
字符串(chuan)連接函數(shu) strcat
功能:將兩個字符串拼接在一起#include
char *cstrcat(char *dest,const char *src) 注(zhu)意:1、前面字符串的''開始(shi)覆蓋。
2、目標空間(jian)足夠大(da)。
3、不(bu)能實(shi)現字(zi)符串自連接。
字符串比較函數 strcmp
功能(neng):比較兩個字符串(chuan)是否相同,其實(shi)是將(jiang)兩個字符串(chuan)對應的字符一一比較,當遇(yu)到字符的
ascII值不同或者遇到''則停止比較#include
char *strcat(char *dest ,char *src) 返(fan)(fan)回值:1、當s1>s2,返(fan)(fan)回正整(zheng)數 1
2、當s1=s2,返回0
3、當s1
二維數組
一般形式
數(shu)據類型(xing)(數(shu)組內元(yuan)素(su)的數(shu)據類型(xing)) 數(shu)組名[行標][列標] int a[2][3];
初(chu)(chu)始(shi)化(同一維數組) 完全(quan)初(chu)(chu)始(shi)化
不完(wan)全(quan)初始化 引用(yong)二維數組(zu)內元素
數組(zu)名[行標(biao)][列(lie)標(biao)] 行標(biao)列(lie)標(biao)也是(shi)從(cong)0開始二維數組(zu)你的數據類型(xing):int [2][3]
二(er)維(wei)數組鎖占空(kong)間的大小 sizeof(a)或者sizeof(int [2][3])
楊輝三角

二維數組
一般形式
數據類型(數組內元素的數據類型) 數組名[行標][列標] int a[2][3];
初始化(hua)(hua)(同一維數組) 完全初始化(hua)(hua)
不完全初始化(hua) 引用(yong)二維數組內元素
數組名(ming)[行(xing)標][列標] 行(xing)標列標也是從0開始二維數組你的(de)數據類型:int [2][3]
二(er)維數組鎖占空間的大(da)小(xiao) sizeof(a)或者sizeof(int [2][3])

