指標陣列:實際上是乙個陣列,陣列中存放的元素是指標
例如: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 陣列指標 指標陣列及陣列傳參
一維陣列傳參 二維陣列傳參 一級指標傳參 二級指標傳參 小引 在指標的學習階段,有不少同學都十分畏懼這個物什,甚至 談指標色變 其實對指標的不理解,其實本質上是對記憶體的不理解,本篇部落格就從零開始 系統的來講解指標這個話題。首先我們應該明確以下的一些基礎常識 指標是乙個變數,用來存放位址,位址唯一...
陣列和指標傳參
在我們寫函式時,有沒有被引數型別難到呢?如果有,那就耐心看完本篇部落格吧 一維陣列傳參 二維陣列傳參 總結 陣列傳參時,降級為其內部元素型別的指標,二維陣列傳參,函式的引數只可以省略第乙個 的數字,因為對二維陣列,可以不知道有多少行元素,但必須知道一行有多少元素。引申為,多維陣列傳參,只有第乙個 的...