黑馬程式設計師 C語言基礎之 陣列 指標的基礎知識

2022-07-17 12:36:12 字數 2832 閱讀 4540

一、陣列:

這裡要解釋一下陣列中會出現的幾個名詞:

(1)陣列名:標示符,代表這個陣列

(2)陣列下標:系統自動分配給陣列的乙個編號(0開始)

(3)陣列的長度:陣列儲存元素的個數

2、陣列的定義

(1)定義的格式:

型別  陣列名[常量表示式];

其中,常量表示式可以為:1)數字    2)返回數字的整數   3)變數(c99不支援,但是llvm支援)

int arrp[10]; //

定義乙個int型別的陣列,長度為10,陣列名是arr

注意:

a.陣列名不能和變數名同名

b.陣列在定義的時候可以和定義其他變數混合定義  int a,b,c[10];

3、陣列的初始化和引用方法

(1)初始化的方法:陣列初始化的方式有一下兩大種:

第一種是在定義的時候進行初始化的操作

1)完全初始化

int a[5]=;

2)部分初始化

int a[5]=;

3)指定位置元素的初始化

int a[5]=;

4) 定義的同時初始化,但是不指定長度

int a=;    //系統會根據賦值的內容來確定陣列的長度

第二種是先定義陣列,然後在進行初始化

int a[5];      //

定義乙個長度為5的int型陣列

//通過下標來初始化,顯式的對每乙個元素初始化

a[0]=1;

a[1]=100;
a[2]=150;
a[3]=45;
a[4]=200;

訪問的方法:對陣列的訪問是使用陣列的下標來進行訪問的,因為下標從0開始,訪問陣列的時候,如乙個陣列的長度為n ,下標的範圍 0-n-1,絕對不能越界訪問。

int a[n];     //

a[n] 這是錯誤的,最多能訪問到 a[n-1]

越界:就是約錯了物件(訪問了我們不應該訪問的空間),其他語言中約見都會報錯,但是現在用的c99的標準,是不報錯的。

4、陣列的儲存原理

(1)陣列在記憶體中是一片連續的記憶體儲存空間,陣列名指向陣列的首位址

(2)陣列中每個元素的位址是連續的

(3)每個元素在儲存資料的時候,低位存在低位址位元組,高位存在高位址位元組

(4)陣列名是用來存放陣列的首位址的。

如何計算陣列的長度呢?這裡我們需要用到乙個sizeof字元,具體實現:陣列的長度 = sizeof(陣列名)/sizeof(陣列元素的型別)

5、陣列作為函式的引數

1)陣列的元素作為函式的引數

陣列的每個元素可以用 a[i] 來表示,a[i] 相當於是乙個變數,相當於把a[i]值賦值乙份,傳遞給函式的形參,即陣列的元素作為函式引數就是值傳遞。

2)陣列名作為函式的引數

陣列名作為函式的引數,就不一樣了,陣列名是乙個位址。

函式的形參和我們陣列的名稱都指向的是同一塊記憶體空間,所以函式中對陣列的操作,就等同於直接操作我們的陣列。

二、指標

1、指標的基本概念

計算機給我們的記憶體若干個儲存單元,每個單元都有唯一位址,每個單元都可以儲存內容,而位址是唯一的,獲取位址的方法「&變數名」,位址所對應的儲存單元是可變的,

位址就是指標。

2、指標與變數

注意:

(1)指標是乙個位址,是常量

(2)指標變數是乙個變數(現在可以存放這個位址,下次可以存放其他位址)

格式:資料型別 * 指標變數名

int *p;      //

定義了乙個指向int型別變數的指標變數,變數名p

指標定義完成以後,不過不初始化裡面存放的是乙個垃圾值,這個時候,我稱這個指標為野指標

int i =3,j=6,k;   //

&i = 2000

k = i+j;

int *i_pointer = &i; //

存誰的位址,就相當於指向誰

//i_pointer --->i

注意「*」兩個使用場合

(1)在定義指標變數的時候使用    int *變數名    表示這個變數是乙個指標變數

(2)*指標變數名  表示取得指標變數指向的那片儲存單元的內容

關於指標變數的注意事項:

1)什麼型別的指標變數,只能指向同種型別的變數

2)指標變數可以是全域性,也可以是區域性

3、指標變數的初始化方法

1)定義的同時進行初始化

int a=10

;int *p = &a;

2)先定義後初始化

int a=10

;int *p;

int *q;

p=&a;

q=&a;

3)如果不確定指標指向什麼內容

p = null;

黑馬程式設計師 C語言指標與陣列

1 指標與位址 一元運算子 用於取乙個物件的位址,因而語句 p c 用於將c的位址賦給變數p,並且說p是指向c的指標。一元運算子 是間接定址或間接引用運算子,當它應用於指標時,它將訪問指標所指向的物件。由於指標也是變數,所以在程式中不必通過間接引用的方法就可以直接使用它們。例如,如果i q是另乙個指...

黑馬程式設計師 C語言 指標

asp.net android ios開發 net培訓 期待與您交流!指標 指標是c語言中非常重要的資料型別 指標變數的定義 int p int是指標指向資料的型別 p是指標變數名稱 只是用來表示變數為指標變數 指標的使用 int a 10 int p p a 或者p a 表示將變數a的記憶體位址賦...

黑馬程式設計師 c語言指標

ios培訓 android培訓 期待與您交流!指標的定義 定義指標和定義乙個變數類似 資料型別 指標變數名 如 int p 表示定義乙個指向整形變數的指標 使用如下 int a 8 int p p a 指標變數 p中存放a的位址,可以通過p中存放的位址,可以訪問變數a中的值。訪問指標變數中存放的位址...