C語言數組篇(一)一維數組


 

    0.  數組的兩種表現形式
        一種是常見的a[10];           //初學者常用
        另一種是用指針表示的數組.    //實際工程使用.常用於參數傳遞
         因為數組也是指針啊.

 

   1.  一維數組的定義
        數組是一批 相同數據集合 .
        如果說 int a; 是在內存中開辟了一個int大小的空間,
        那么 int a[10] 就是表示在內存中開辟了10個 連續的 int大小的空間,總大小為 10 * sizeof(int).
        注意,數組開辟的空間是連續的 .

 

    2.  數組的組成 .地址 大小 和 空間   
        就如同普通變量 int a = 10; 一樣,數組也有 3要素組成.
        auto int a[10];
        在內存中開辟了一個超大的空間,這個空間有一個名字叫做 a,a即是名稱,也是這段空間的地址 叫 首地址.
        這個超大空間分為10個小空間,每個小空間的大小是 int 大小.
        這個也是默認放在棧空間auto.
 
  3. 數組的初始化
        數組的初始化有兩種情況:
            第一次初始化專用
            非第一次初始化

            第一次初始化: int a[3] = {2,3,4};    //這種大括號的初始化方式只能用於第一次初始化的情況下,往后賦值或者取值,只能用循環的方式來實現.
            非第一次:
            
   int i;
     for(i= 0; i<3;i++){
         a[i] = i;
     }

  注意:數組的下標是從0開始的 .

 

3. 一維數組和指針.!!!!!
        
        定義一個指針,指向 int a[10] 的首地址
        int *p = a;
        或者
        int *p;
        p = a; //注意這里不是&a,因為a作為數組名, 本身就是地址 .

        在數組中,
   
     a[0] = 10;  //數組版
     *p = 10;    //指針版

     a[2] = 20;    //數組
*(p+2) = 20; //指針版
        首先,p = a,代表着首地址 ,比如是0xA0
        那么 p+1 是什么意義? p+1 表示,在首地址的基礎上,往下偏移1個空間量 那p+1=0XA1嗎?? 不是的,因為這個數組的一個空間量是int大小 ,所以它的地址 應該是 0XA0+(sizeof(int) * 偏移量) //0XA4
        然后再進行*運算代表取值.

        數組指針操作的基本思想就是,在首地址的基礎上,進行指針偏移,然后進行取值和賦值操作
        
        // 例子,數組指針的實際用途
        // 對數組 int a[10]進行排序
        // 思路: 寫一個排序函數,然后把數組的指針作為參數傳遞進去
// 2. 首先,我們傳進來的是一個數組指針,那么,數組a的指針怎么寫呢// 數組a[10] 的指針是 int *p = a;
//
所以設計函數的時候,形參部分就可以寫,int *p, 即數組的形參. int sort(int *p){ //形參 //...具體功能 } int main(){
  int a[10] = {1,3,2,5,6,4,9,7,8,0}; //定義一個數組 // 1. 我們的思想就是把這個數組的地址傳遞過去就可以了,那么實現這個功能,要怎么設計sort函數呢? sort(a); //實參 }

 

 


        這里先介紹一下4個函數:
        strcpy(s1,s2); //將s2復制給s1,一旦在s2中遇到'\0', 就停止函數.

        strcat(s1,s2); //將s2接在s1末尾.

        strlen(s1); //返回s1的長度

        strcmp(s1, s2); //比較兩個字符串,如果s1 == s2 ,則返回0, s1< s2 返回值小於0, s1>s2 返回值>0 .


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM