25 陣列引數和指標引數分析

2022-07-17 19:27:13 字數 597 閱讀 3970

目錄c 語言以高效作為最初設計目標:

二維陣列引數中第一維的引數可以省略

void f(int a[5]) <-> void f(int a) <-> void f(int* a)

void g(int a[3][3]) <-> void g(int a[3]) <-> void g(int (*a)[3])

等價關係:陣列退化後,所退化的指標必須能指向原陣列中的每個元素

陣列引數

等效的指標引數

一維陣列:float a[5]

指標:float* a(指標指向float

指標陣列:int* a[5]

指標的指標:int** a(指標指向int*

二維陣列:char a[3][4]

陣列的指標:char (*a)[4](指標指向char[4]

示例:傳遞與訪問二維陣列

陣列引數 和 指標引數 分析

c語言中只會以值拷貝的方式傳遞引數,傳址呼叫本質上也是對位址值的傳遞。當向函式傳遞陣列時,將陣列名看做常量指標傳陣列首元素位址。c語言以高效為最初設計目標,在函式傳遞的時候如果拷貝整個陣列執行效率將大大下降,因此只傳遞首元素的位址。二維陣列引數同樣存在退化的問題,二維陣列可以看做是一維陣列,二維陣列...

c語言深度剖析 35 陣列引數和指標引數分析

1.思考 2.退化的意義 c語言以高效作為最初設計目標 3.二維陣列引數 二維陣列引數中第 維的引數可以省略 4.等價關係 5.被忽視的知識點 6.程式設計實驗 include void access int a 3 int row printf n void access ex int b 2 3...

陣列引數和指標引數的分析

為什麼c語言中的陣列引數會退化為指標?c語言中只會以值拷貝的方式傳遞引數,本質上還是傳值,傳位址也是傳值,只不過傳的是位址值 當向函式傳遞引數時 將整個陣列拷貝乙份乙份傳入函式 錯 將陣列名看做常量指標傳陣列首元素位址對 c語言以高效為最初設計目標,在函式傳遞的時候,如果將拷貝整個陣列執行效率將大大...