C語言基礎-數組

一、數組(一維數組)

什麼是數組?
數組是一組有序的、類型相同的數據的集合
數組的作用?
處理一些類型相同的數據集合
數組的構成:
元素、下標或索引、數組名
定義:

    使用前必須定義
    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格式:

  1. strcpy (字符數組名1,字符數組名2) 功能:把字符數組2中的字符串拷貝到字符數組1中。串結束標誌“”也一同拷貝。字符數名2,
    也可以是一個字符串常量。這時相當於把一個字符串賦予一個字符數組。

字符串比較函數strcmp格式:

  1. 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字節的存儲空間,此時空間裏面沒有存放東西。對於數組中的各元素,它們的存儲空間是連續的,沒有間斷。因此,如果知道了某個元素的存放地址,就能準確獲取其它元素的存放地址。

下圖是對數組聲明的一些解說:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章