一、數組(一維數組)
什麼是數組?
數組是一組有序的、類型相同的數據的集合
數組的作用?
處理一些類型相同的數據集合
數組的構成:
元素、下標或索引、數組名
定義:
使用前必須定義
1、存儲類型
2、數據類型
3、數組名
4、數組大小
語法:
數據類型 數組名[數組長度] ;
例子:int stuIds[22];
備註:
1、數組名後接一個或多個括在方括號內的表達式,用以指定數組的維數
2、數組長度只能是常量和常量表達式(大於0)
定義數組的特性
所有數組元素具有相同的類型
允許使用變量的地方都可以使用數組元素
取值:也可以使用整型表達式引用數組的元素
數組名[整型表達式]
數組裏面的每個元素所佔字節數和數組類型一致
初始化:
什麼是數組初始化:
數組初始化是在數組定義時給元素賦初值
extern和static數組元素自動初始化爲 0 -> extern int a[10];或 static int a[10]; ->代表所有元素值都爲0
語法:數據類型 數組名[常量表達式]={值,值…};
例如:int ary[10]={0,1,2,3,4,5,6,7,8,9};
規定:
元素之間用逗號隔開
可以只給部分元素賦值,剩餘元素賦0值
給全部元素賦值時,可以不說明元素的個數。例如:int ary[]={0,1,2,3,4,5,6,7,8,9};
二、二維數組
定義(聲明):
數據類型 數組名[常量表達式1][常量表達式2];
例如:int temp[4][3];
初始化:
inta[3][4]=
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11,12}
};
inta[3][4]={
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12};
inta[3][4]={
1, 2, 3, 4,
5, 6, 7, 8,
9,10 , 0, 0};
語法:
數組名[行下標][列下標]
三、字符數組
字符串常量
printf("Hello World!!!");
其中Hello World!!!就是字符串數組
區別->字符常量
例如:'a'
備註:
1、符號不同,字符常量用單引號,字符串常量用雙引號
2、長度不同,字符常量有且只有一個字節,字符串常量可多個字節
3、字符串常量一'\0'結尾,例如:"Hello World!!!"之後隱藏了一個'\0'
(ps:'\0'稱作結束標誌)
字符數組 == 字符串變量
注意:
- 不能對數組做整體化賦值,只能在初始化的時候進行。
- ==的意義是:判斷兩個數組的地址值是否相等
- strcmp的意義是:判斷兩個字符數組的值是否相等
例外:字符串可以通過系統函數進行整體操作
四、字符串的整體I/O操作
字符串的輸入、輸出、合併、修改、比較、轉換、複製、搜索幾類。
頭文件 string.h
gets(ps:scanf)
功能:通過標準輸入所獲得的字符串
函數說明:char *gets(char *buffer);
其中,返回值:成功時返回輸出緩衝區首地址,否則返回NULL
puts(ps:printf)
功能:用於在標準輸出設備上顯示字符串
函數說明:int puts(const char *string);
sprintf
功能:將其他數據類型轉換成字符串類型並輸出到指定字符串中.
函數說明:int sprintf( char *buffer, const char*format [, argument] ... );
注意:
以上幾種字符串處理函數,應當再次強調:庫函數並非C語言本身的組成部分,而是C編譯系統爲方便用戶使用而提供的公共函數。不同的編譯系統提供的函數數量和函數名、函數功能都不盡相同,使用時要小心,必要時查一下庫函數手冊。
字符串拷貝函數strcpy格式:
- strcpy (字符數組名1,字符數組名2) 功能:把字符數組2中的字符串拷貝到字符數組1中。串結束標誌“”也一同拷貝。字符數名2,
也可以是一個字符串常量。這時相當於把一個字符串賦予一個字符數組。
字符串比較函數strcmp格式:
-
strcmp(字符數組名1,字符數組名2) 功能:按照ASCII碼順序比較兩個數組中的字符串,並由函數返回值返回比較結果。
字符串1=字符串2,返回值 =0;
字符串1〉字符串2,返回值 〉0;
字符串1〈字符串2,返回值〈0。
假設計算機指定數組score中的元素從地址爲1000的地方開始存放。那麼,存放一個元素,計算機需要給該數組多少空間呢?
由於每個元素的數據類型爲int,而一般來說,int佔用4個字節,所以計算機需要爲每一個元素分配4個字節的存儲空間。如下圖所示:元素score[0]佔用了編號爲1000, 1001, 1002, 1003共4個字節的內存空間。score[1]佔用1004 - 1007號內存空間。其餘元素依此類推。
當聲明數組 int score[10]; 時,計算機就爲數組預留10×4=40字節的存儲空間,正式的說法是分配40字節的存儲空間,此時空間裏面沒有存放東西。對於數組中的各元素,它們的存儲空間是連續的,沒有間斷。因此,如果知道了某個元素的存放地址,就能準確獲取其它元素的存放地址。
下圖是對數組聲明的一些解說: