陣列 C語言

2021-08-19 17:04:01 字數 949 閱讀 6124

int a[10]中的a是陣列名,它指向陣列中的第乙個元素。但是當其做為sizeof的運算元,或者使用&取位址的時候,要把a作為帶個陣列來考慮。

先看乙個例子:

int a[10] = ;

printf("%p, %p\n", a, &a);

列印結果是0xbfc077b4, 0xbfc077b4。兩者的值是一樣的,但是它們的型別不同。a表示的是陣列第乙個元素的位址,型別是int*&a表示陣列a的位址,型別是int (*)[10],乙個指向包含10個int元素陣列的指標。

我們可以使用下例對上述結論進行驗證:

int b[10] = ;

printf("%p, %p, %p, %p\n", b, &b, b+1, &b+1);

列印結果為0xbf890214, 0xbf890214, 0xbf890218, 0xbf89023ca+1的步長是乙個陣列元素的大小,而&a+1的步長卻是整個陣列的大小。

陣列當函式引數的時候,其型別退化為指標。來看一下例子:

int test_func(int a)

int main(int argc, char* argv)

; test_func(arr);

return

0;}

上述例子中的sizeof(a)為4,因為陣列當函式引數時,退化成指標,所以sizeof(a)其實是sizeof(int*)

c語言陣列

陣列 構造資料型別之一 陣列是具有一定順序關係的若干個變數的集合,組成陣列的各個變數稱為陣列的元素。陣列中各元素的資料型別要求相同,用陣列名和下標確定。陣列可以是一維的,也可以是多維的。在科學計算中,許多重要的應用都是基於陣列的。所謂一維陣列是指只有乙個下標的陣列。它在計算機的記憶體中是連續儲存的。...

C語言陣列

在變數作函式引數時,所進行的值傳送是單向的。即只能從實參傳向形參,不能從形參傳回實參。形參的初值和實參相同,而形參的值發生改變後,實參並不變化,兩者的終值是不同的。而當用陣列名作函式引數時,情況則不同。由於實際上形參和實參為同一陣列,因此當形引數組發生變化時,實參陣列也隨之變化。當然這種情況不能理解...

C語言 陣列

陣列 void test1 for int i 0 i 5 i for int i 0 i 5 i 陣列資料倒序存放 void test2 printf 請輸入5個學生的成績 n for int i 4 i 0 i printf 輸出5個學生的成績 n for int i 0 i 5 i 將陣列的長...