陣列:包含了同一型別的多個資料元素的集合 eg:int a[5] 表明定義了乙個陣列,其包含5個int型的資料
指標:在程式中宣告乙個變數並使用位址作為該變數的值,那麼這個變數就是指標變數 eg:int *p 變數p是指向int型變數的指標
陣列的概念:
int arr[5]={} 表示定義了乙個int型陣列,其陣列名是arr,陣列長度是5
int arr[5]=; 表示定義了乙個int型陣列,其陣列名是arr,陣列長度是5,arr[0]的值初始化為0
int arr[5]=; 表示定義了乙個int型陣列,其陣列名是arr,陣列長度是5,arr[0]=1,arr[2]=2
int arr=; 表示定義了乙個int型陣列,其陣列名是arr,該陣列預設長度為2
陣列下標
:陣列元素的引用要指定下標,一般形式為陣列名[
下標],下標的取值範圍為(0,陣列長度-1)
陣列的使用
利用for迴圈進行初始化
#include
intmain()
return0;}
一維陣列名:
有兩種情況代表整個陣列
1.
sizeof(arr):
代表整個陣列的位元組長度
eg:
intarr[5];
intlen=
sizeof
(arr)/
sizeof
(arr[0]);
//陣列的長度(sizeof(arr)=20,sizeof(arr[0])=4,len=20/4=5)
2.&arr+1(跳到陣列的末尾後的位置)
陣列越界訪問=訪問非法位址(哨兵位)(會報錯)
#include
intmain()
;printf(
"%d\n"
,&a);
printf(
"%d\n"
,&a1);
printf(
"%d\n"
,&arr[0]);
printf(
"%d\n"
,&arr[4]);
return
0;}//輸出結果為
15728352
15728340
此時變數是以棧的形式進出的(棧;後進先出)
arr[1] *(arr+1)
的區別#include
intmain()
;printf(
"%d\n"
,arr[1]);
//輸出下標為1的元素
printf(
"%d\n"
,*(arr+1));
//輸出第二個位址所指向的內容
return0;}
指標的運用
#include
intmain()
定義功能函式時 int fun(int arr[ ];int len) 等價於int fun(int*arr,int len)
arr陣列名相當於陣列元素的首位址
任何指標的大小都是4個位元組
#include
intmain()
野指標int
*p;//*p
沒有初始化,會出現報錯 預防野指標的一種方法:int *p=null;
*p=30;
printf(
"%d"
,*p);
//交換兩個數的功能函式
#include
void
fun(
int*p1,
int*p2)
intmain()
指標的初步學習
第一次用markdown編輯器,感覺很過癮 d c primer中指標的定義 指標 pointer 是 指向 point to 另外一種型別的復合型別。與引用類似,指標也實現了對其他物件的間接訪問。1.指標本身就是乙個物件 2.指標無需在定義時賦初值 int p 指向int型物件的指標 double...
指標初步學習 C
pointer 1 指向const物件的指標 c 強制要求指向const物件的指標也必須具有const特性 定義時不需要對其進行初始化。允許對其重新賦值,使其指向另乙個const物件,但不能通過它修改所指物件的值 2 把乙個const物件位址賦給乙個普通的,非const物件的位址會導致編譯錯誤,不能...
陣列,指標陣列,陣列指標的學習理解
本文將以如下定義的陣列及指標為例,對陣列,指標陣列,陣列指標進行說明。這是看完書後總結的,所謂好記性,不然爛部落格,想將這些總結記下,以便需要時進行重溫。如有理解上的錯誤,望大家指出。int a 3 3 int p0 3 int p1 4 int p3 int p4 1 二維陣列 a 二維陣列名 a...