一、陣列:
這裡要解釋一下陣列中會出現的幾個名詞:
(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中的值。訪問指標變數中存放的位址...