陣列與函式

2021-07-10 17:01:36 字數 1250 閱讀 8891

不能將乙個陣列賦值給另乙個陣列

int cards[4]=;

int hand[4];

hand = cards; //wrong;

hand[4] = ;// wrong,陣列只有在定義時才能初始化,此後不能,但是可以用下標分別給陣列中的元素賦值

注:但是結構體struct可以用賦值運算子(=)將結構賦給另乙個同型別的結構,

即使結構中包含陣列成員

陣列名是第乙個元素的位址,而對整個陣列名應用位址運算子時,得到的是整個陣列的位址。

short tell[10];

cout《數字上這兩個位址相同。但概念上,&tell[0] 是乙個2位元組的記憶體塊位址,而&tell是乙個20位元組的記憶體塊位址。

// 也可以用int sumfun(int * arr,int n)。當且僅當用於函式頭或函式原型中,

// int * arr和int arr含義相同,都意味著arr是乙個指標,

// 但 int arr:arr不僅指向int,還指向int的乙個陣列

int sumfun (int arr,int n)

,,};

int total = sum(data , 3);

data是陣列名,該陣列有3個元素,每個元素是由4個int值組成的一維陣列。因此,data的型別是指向由4個int值組成的一維陣列的指標。因此函式原型(prototype)為:

// 方式1

int sum ( int (*ar)[4] , int size); 

// 方式2

int sum(int ar[4], int size);//可讀性更強

這兩個原型都指出ar是指標而不是陣列,指標型別還指出它指向由4個int組成的陣列,因此指標型別指定了列數,所以不需要把列數作為引數單獨傳遞,而只需傳遞行數。

注:int (*ar)[4]中的()必不可少,(優先順序()>[ ]>*)

,它宣告乙個指標,該指標指向由4個int值組成的陣列;

而 int *ar[4] 將宣告乙個陣列,該陣列由4個int指標組成。

那麼,在定義的函式中如何使用該二維陣列呢?

將ar看成是二維陣列的名稱:

int sum(int ar[4],int size)

}return total;

}

陣列與函式

一維陣列在前一篇部落格 二維陣列 二維陣列定義的一般形式為 型別說明符 陣列名 常量表示式 常量表示式 例如 定義a為3 4 3行4列 的陣列,b為5 10 5行10列 的陣列。如下 float a 3 4 b 5 10 資料型別 陣列名 常量表示式1 常量表示式2 初始化資料 4種方法對二維陣列初...

陣列與函式

建立陣列的兩種方法 1 利用new來建立物件 2 利用字面量來建立陣列 1 var arr new array 2 var arr 1,2,3,4,5,6,7,陣列排序 利用array中的sort函式進行排序 sort 它可以接收乙個自定義的排序規則函式,也可以不接收 使用字典順序 如你要給它乙個排...

c指標陣列與陣列指標與指標函式與函式指標筆記

include include typedef struct t ooxx t ooxx,pt ooxx 測試陣列指標 void test ooxx arrayp t ooxx p int num 測試指標陣列 void test ooxx parray t ooxx p,int num 測試函式指...