C語言中關於數組與指標和字串與指標的小結

來源:互聯網
上載者:User

數組與指標:
數組元素的指標就是數組元素的地址
指向數組元素的指標,它的方法與指向變數的指標變數相同
引用一個數組元素可以用:
(1)下標法  如:a[i]形式;
(2)指標法  如:*(a+i)或*(p+i);
a是數組名,p是指向數組元素的指標變數,它的初值p=a
注意:
  數組名即翻譯成數組的第一個元素的地址,其中a或p是第一個元素的地址,加上i就是指向第i個元素。注意,它不是地址加上i,具體要看是什麼類型的。
例題:
     輸出數組中的全部的元素的方法
(1)    下標法(就是簡單地數組的定義,初始化,賦值及應用)
(2)    通過數組名計算數組的元素的地址,找到元素的值
Int I,a[10];
For(i=0;i<10;i++){
Scanf(“%d”,&a[i]);
}
For(i=0;i<10;i++){
Printf(“%d”,*(a+i));
}
(3)    用指標變數指向數組
Int I,a[10],*p;
For(i=0;i<10;i++){
Scanf(“%d”,&a[i]);
}
For(p=a;i<(a+10);p++){
Printf(“%d”,*p);
}
用數組名做函數參數:
C語言調用函數時,虛實結合的方法都是採用“值傳遞”方式,當用變數名做函數時,傳遞的是變數的值,當採用數組名作為函數參數時,
由於數組名代表的是數組元素首地址,因此傳遞的值是地址,所以要求形參為指標變數。
小結:
     如果有一個實參數組,想在函數中改變此數組中元素的值,實參與形參的對應關係有以下4中情況:
(1)    形參和實參都用數組名,如:
Int a[10];
F(a,10);
Void f(int x[],int n){}
(2)    實參用數組名,形參用指標變數,如:
Int a[10];
F(a,10);
Void f(int *a,int n){}

(3)    實參形參都用指標變數,如:
Int a[10],*p=a;
F(p,10);
Void f(int *x,int n){}

(4)    實參為指標變數,形參為數組名,如:
Int a[10],*p=a;
F(p,10);
Void f(int x[],int n){}
字串與指標
字串中字元的存取可以用下標法,也可以用指標方法
雖然用字元數組和字元指標變數都能實現字串的儲存和運算,但他們還是有區別的:
1.    字元數組有若干個數組元素組成,每個元素中存放一個字元,而字元指標變數中存放的是地址即字串第一個字元的地址,絕不是將字串放到字元指標變數中;
2.    賦值方式.字元數組只能對各個元素賦值;
3.    對字元指標變數賦初值;
4.    如果定義一個字元數組,在編譯時間為他分配記憶體單元,它有確定的地址.而定義一個字元指標變數時,給指標變數分配記憶體單元,在其中可以放一個字元變數的地址,也就是說,該指標變數可以指向一個字元資料,但如果未對它賦予一個地址值,則它並未具體指向一個確定的字元資料;
如:
    char str[10];
    scanf("%s",str);
這樣編寫是完全可以的。經常有人用這樣的方法
如:
    char *a;
    scanf("%s",a);
它的目的是想輸入一個字串,一般也能運行,但這種方法是危險的,因為指標變數沒有賦初值時,它是隨機指向的。
5.    指標變數的值是可以改變的;
另外,如定義一個指標變數,並使用它指向一個字串,就可以用下標形式,引用指標變數所指的字串中的字元.
                                                                                                                                    

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.