Empire C:Basic 3

來源:互聯網
上載者:User

標籤:

首先我們定義一個表示年齡的指標:

int* page; 這就是定義了一個指標,和定義普通變數就多了一個*符號而已。

為什麼變數名用了p開頭,這裡引用了英文pointer(指向),表示它是一個指標,而非普通變數,加不加p都無所謂。

1.*號是取值運算子(間接訪問),這裡不是乘號的意思

2.*號必須放在指標類型和指標變數中間,擺在哪裡無所謂

有3種方式:int* page; int *page; int * page;

第一種是比較正規的寫法,第2種是用的最多的,但是最好不要用第3種。

一、明確幾個概念:

1.指標也是一種資料類型

int* 這裡表示定義了指向int類型變數的指標,並不是說定義了int類型的指標

int* page 這裡page是指標變數,它只能存放地址,C語言規定,只有指標類型的變數才能存放地址,不是你隨隨便便定義一個變數就能存放的。

2.定義指標的時候兼具兩個功能

int *page=&age; 不僅擷取了age的地址,同時也擷取了age變數的值。

3.指標使用之前必須先初始化,指標類型與指標指向類型一致。

4.地址

每個變數都有自己的地址,且都是唯一不重複的,而且地址不一定全都是數字。

5.直接存取和間接訪問

  • 直接存取:按變數地址存取變數值
  • 間接訪問:通過存放變數地址的變數去訪問變數
二、指標數組&數組指標

1.指標和數組的關係

數組名就是一個指標,即地址

int a[5] 這是一個int類型的數組

它有5個元素,分別為a[0],a[1],a[2],a[3],a[4],這5個都是變數,和普通變數沒多大區別

這個數組的名字是a,可別弄成a[5]了

a是一個指標常量(地址無法改變,不能指向其他變數), 它只儲存著數組第一個元素的地址,即a[0]的地址

所以我們用scanf()輸入字串的時候不需要&

char a[5]

scanf("%s",a)

為什麼只儲存著第一個元素的地址,那其他元素怎麼辦?

C語言中,數組的記憶體配置是連續的,也就是連在一起的,如果數組第一個元素的地址是1000,那第2個則是1001,所以知道了第一個元素的地址,就可以知道其他元素的地址。

2.指標數組&數組指標

指標數組:array of pointers,即用於儲存指標的數組,也就是數組元素都是指標

數組指標:a pointer to an array,即指向數組的指標

還要注意的是他們用法的區別,下面舉例說明。

int* a[4]     指標數組     

                 表示:數組a中的元素都為int型指標    

                 元素表示:*a[i]   *(a[i])是一樣的,因為[]優先順序高於*

int (*a)[4]   數組指標     

                 表示:指向數組a的指標

                 元素表示:(*a)[i]  

注意:在實際應用中,對於指標數組,我們經常這樣使用:

1 typedef int* pInt;2 pInt a[4];
View Code 

這跟上面指標數組定義所表達的意思是一樣的,只不過採取了類型變換。

代碼示範如下:

 1 include <stdio.h> 2  3 int main() 4 { 5 int c[4]={1,2,3,4}; 6 int *a[4]; //指標數組 7 int (*b)[4]; //數組指標 8 b=&c; 9 //將數組c中元素賦給數組a10 for(int i=0;i<4;i++)11 {12 a[i]=&c[i];13 }14 //輸出看下結果15 printf("%d",a[1])l; //輸出2就對16 printf("%d",(*b)[2]); //輸出3就對17 return 0;18 }
View Code 參考文獻:

1.指標數組和數組指標的區別

2.從零開始學編程---第一步-C語言

Empire C:Basic 3

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.