c語言 陣列

2021-10-08 02:18:11 字數 2372 閱讀 4848

字串除了存放在字元型陣列中,還能存放在文字常量區

二維陣列定義時,一維大小可預設,但二維大小必須指明確定值;

錯誤使用例項:

char b[2][3]=; 錯誤,只有2行,卻定義了3個字串

1.、直接給每個元素賦值

int array[4]

=;2、賦值一部分,後面預設=

0int array[4]

=;3、不初始化

1、如果不初始化,區域性變數在棧上,各陣列元素的值將是隨機數;

2、全域性變數、靜態變數處於資料區,預設初始化為0

int array[4]

=;//未初始化的棧區:vs缺省會報錯;但如果關閉錯誤改為警告

// 則vs2015中編譯器預設(在vs2017下)都按照cc去填充?列印出來-858993460這個值即為0xcccccccc的十進位制表示

3. 由賦值引數個數推測陣列的個數

int array=

;int a[5]

[3]=

,,,,

};1、宣告時,使用 初始化;

2、使用memset;

3、用for迴圈賦值。

訪問二維陣列b的第i行第j列的方式:

b[i]

[j]*

(b[i]

+j)==*(

*(b+i)

+j) 這裡*

(b+i)

== b[i](*

(b+i)

)[j]

int array[3]

[4];*

(array[i]

+j)== array[i]

[j]*

(array+i)

== array[i] 行位址

錯誤示例: *

(array+i*

4+j)是第 (

4*i+j ) 行的首元素位址

列位址和行位址的偏移不能在乙個級別上+

int x =2;

//x定義並賦值,當然不一定是2

char array[x]

;

測試了一下,這樣的**在vc6.0下會報錯,因為對c99新標準沒有很好地實現。vs2005也不行。vs2013可以正確編譯。gcc 3.2.2也可以正確編譯

c貌似不支援引用傳遞陣列,而c++支援

呼叫函式的輸入實參可以是指標or陣列名

被呼叫函式接收陣列傳參的2種方式:

1、 位址傳遞

void

myfunction

(int

*param)

形式引數是乙個指標

2、 值傳遞(效率較低,不建議使用)

void

myfunction

(int param[10]

) 形式引數是乙個已定義大小的陣列

void

myfunction

(int param)

形式引數是乙個未定義大小的陣列

故可以有2*2

=4種傳遞方式

陣列名傳遞給指標

陣列名傳遞給陣列名

指標傳遞給陣列名

指標傳遞給指標

例項:

//陣列的兩種傳遞方式

#include

using namespace std;

//值傳遞

//缺點:每次都要傳遞?個位元組的陣列長度的陣列形參

void

fun1

(int a[5]

)//位址傳遞

//優點:每次只要傳遞4個位元組長度的指標變數即可

//缺點:陣列的長度不好獲取,在正常的開發中需要傳入長度,當然也可以使用其他的方式獲取

void

fun2

(int

*a)//主函式

intmain()

;fun1

(a);

//值傳遞 方式1

fun2

(a);

//位址傳遞 方式1

fun1

(&a[0]

);//值傳遞 方式2

fun2

(&a[0]

);//位址傳遞 方式2

cout<<

"a[3] = "

<

}

另外,fun1(a)和fun1(&a[0])、fun2(a)和fun2(&a[0])都是等價的,a表示陣列的首位址,&a[0]表示陣列的第乙個元素的位址,因而a==&a[0]。

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 將陣列的長...