指標陣列 陣列指標 陣列傳參

2021-09-29 12:30:06 字數 1181 閱讀 4460

指標陣列:實際上是乙個陣列,陣列中存放的元素是指標

例如:int* arr[10]

char* arr1[5]

陣列指標:實際上是乙個指標,指向乙個陣列的指標

例如:int (*p) [10]

這就表示乙個p指標,指向乙個大小為10陣列

在陣列傳參的過程中,由於c語言的對於速度的要求的特點,是不會傳整個陣列的,最終陣列都會退化成乙個指向陣列首元素位址的指標

在一維陣列傳參中有如下寫法:

#include

void

test

(int

* arr)

void

test1

(int arr[10]

)void

test2

(int arr)

intmain()

;test

(arr)

;test1

(arr)

;test2

(arr)

;return0;

}

以上寫法在c語言中都是被認可的,但是通過對比我們可以看出 上面 test()的寫法更能體現出陣列在傳參的過程中會退化為首元素的位址,可以用指標接 收。

至於test1 中[ ]中的值是不影響結果的,在實質上test1 與 test 2是一樣的,在傳遞過程中arr只是乙個指向首元素位址的指標並不會真正的拷貝整個陣列,所以[ ]中的值是沒有意義的。

在二維陣列傳參時有如下寫法:

#include

void

test1

(int

(*arr)[5

])void

test2

(int arr[3]

[5])

void

test3

(int arr[

5])int

main()

;test1

(arr)

;test2

(arr)

;test3

(arr)

;return0;

}

以上**都是可以執行的,在二維陣列傳參的過程中,陣列依舊會退化為首元素位址,只不過二維陣列中的首元素表示第0行的元素,在傳遞過程中我們至少要給出列元素。

指標陣列陣列傳參 指標引用傳參

指標和陣列作為引數傳入函式時,傳入的是位址,即指向變數的位址和陣列的首位址,可以在函式中改變指標或陣列的值,但本質上它們還是值的傳遞 區別於變數的值傳遞的是 變數值傳遞不會改變實參原來的值。我們無法對指標和陣列的位址進行操作 如 位址賦值,分配記憶體等 要進行位址操作需要使用指標引用或指標的指標。示...

C 陣列指標 指標陣列及陣列傳參

一維陣列傳參 二維陣列傳參 一級指標傳參 二級指標傳參 小引 在指標的學習階段,有不少同學都十分畏懼這個物什,甚至 談指標色變 其實對指標的不理解,其實本質上是對記憶體的不理解,本篇部落格就從零開始 系統的來講解指標這個話題。首先我們應該明確以下的一些基礎常識 指標是乙個變數,用來存放位址,位址唯一...

陣列和指標傳參

在我們寫函式時,有沒有被引數型別難到呢?如果有,那就耐心看完本篇部落格吧 一維陣列傳參 二維陣列傳參 總結 陣列傳參時,降級為其內部元素型別的指標,二維陣列傳參,函式的引數只可以省略第乙個 的數字,因為對二維陣列,可以不知道有多少行元素,但必須知道一行有多少元素。引申為,多維陣列傳參,只有第乙個 的...