陣列和指標的初步學習

2021-08-18 19:46:55 字數 1820 閱讀 7674

陣列:包含了同一型別的多個資料元素的集合  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...