陣列:陣列是用於儲存多個相同型別資料的集合。
陣列:只能乙個乙個元素的賦值或拷貝
指標:指標變數可以相互賦值
陣列:
陣列所佔儲存空間的記憶體:sizeof(陣列名)
陣列的大小:sizeof(陣列名)/sizeof(資料型別)
指標:
在 32 位平台下,無論指標的型別是什麼,sizeof(指標名)都是 4。
在 64 位平台下,無論指標的型別是什麼,sizeof(指標名)都是 8。
針指數組:
int *qishou[2];//定義乙個有兩個元素的指標陣列,每個元素都是乙個指標變數
int girl1= 167;
int girl2 = 171;
qishou[0] = &girl1;
qishou[1] = &girl2;
陣列指標:
int (*p)[3]; //定義乙個指向三個成員的陣列的指標
訪問元素的兩種方式:
int a[4][3]=,,,
};p = &a[0];
陣列法: (*p)[j]
指標法: *((*p)+j)
陣列傳參時,會退化為指標!
(1)退化的意義:c 語言只會以值拷貝的方式傳遞引數,引數傳遞時,如果只拷貝整個數
組,效率會大大降低,並且在引數位於棧上,太大的陣列拷貝將會導致棧溢位。
(2)因此,c 語言將陣列的傳參進行了退化。將整個陣列拷貝乙份傳入函式時,將陣列名
看做常量指標,傳陣列首元素的位址。
#include
#include
#include
/*---------------《一維陣列傳參》---------------*/
/*方式一:形參不指定陣列大小
用陣列的形式傳遞引數,不需要指定引數的大小,
因為在一維陣列傳參時,形參不會真實的建立陣列,
傳的只是陣列首元素的位址。
*/void
method_1
(int arr,
int len)
}//方式二:指定陣列大小
void
method_2
(int arr[10]
)}void
method_3
(int
*arr,
int len)
}int
main102
(void);
method_1
(arr,10)
;printf
("------華麗的分隔線------\n");
method_2
(arr)
;printf
("------華麗的分隔線------\n");
method_3
(arr,10)
;system
("pause");
return0;
}/*---------------《指標陣列傳參》---------------*/
//方式一:指標陣列傳參,宣告成指標陣列,不指定陣列大小
void
method_4
(int
*arr,
int len)
}//方式二:指標陣列傳參,宣告成指標陣列,指定陣列大小
void
method_5
(int
*arr[10]
)}//方式三:二維指標傳參
//傳過去是指標陣列的陣列名,代表首元素位址,而陣列的首元素又是乙個指標
//就表示二級指標,用二級指標接收
void
method_6
(int
**arr,
int len)
}int
main()
;int
*arr_p[10]
=;for(
int i =
0; i <
10; i++
)method_4
(arr_p,10)
;printf
("------華麗的分隔線------\n");
method_5
(arr_p)
;printf
("------華麗的分隔線------\n");
method_6
(arr_p,10)
;system
("pause");
return0;
}
我們不一樣
前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...
我們不一樣
這麼多年的兄弟 有誰比我更了解你 太多太多不容易 磨平了歲月和脾氣 時間轉眼就過去 這身後不散的筵席 只因為我們還在 心留在原地 張開手 需要多大的勇氣 這片天 你我一起撐起 更努力 只為了我們想要的明天 好好的 這份情好好珍惜 我們不一樣 每個人都有不同的境遇 我們在這裡 在這裡等你 我們不一樣 ...
不一樣又不一樣的 木板接水
空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...