C 陣列 陣列元素 儲存引用以及作為函式引數

2021-07-26 16:35:50 字數 1626 閱讀 6586

c++為基本的資料型別(整數,浮點數,字元型和布林型)提供了內建的支援(就像在上一章我們為複數類定義了過載的運算子那樣),內建的支援也稱為協助函式(helper function),支援這些資料型別完成各種允許的運算。也就是說基本資料型別也可以說是乙個類:有資料有操作,兩者是封裝起來的。在c++的標準庫中支援基本類抽象的組合,如字串,複數等。在內建資料型別和標準庫類型別之間是復合型別(compound type),特別是指標和陣列型別。

陣列(array)是一種順序容器sequence container,是由單一型別元素組成的乙個有序集合。

下面給出一例項:

int fibon[10]=;

陣列名為fibon,是乙個包含10個元素的整型一維(dimension)陣列,其第1個元素為fibon[0],存放0,最後乙個元素為fibon[9],存放34。

對陣列元素的訪問是通過下標(subscript)操作符,按元素在陣列中的位置進行訪問,稱為索引訪問(indexing)或下標訪問(subscripting)。陣列元素的訪問示意圖如下圖所示。

注意:

結構陣列定義

struct keyword ;

初始化:

keyword keytab=;

結構陣列初始化時可以用括號來區分每乙個結構,例如:

keyword keytab=,,,……};

當提供了陣列中所有結構值時,不必用這種括號的形式。

物件陣列定義

cgoods goods[3];

該商品類物件陣列包含3個商品物件陣列元素,系統呼叫3次預設的建構函式來建立這3個商品物件陣列元素。

初始化: 應該完整書寫各個元素的建構函式及成員資料初值:

cgoods goods[3]=;

陣列名可以作為函式的引數。在函式呼叫時傳遞實參陣列的首位址,所以在被調函式中對形引數組的處理實際就是對呼叫函式的實參陣列的處理。

c++只傳遞陣列首位址,而對陣列邊界不加檢查。這帶來的好處是,函式對長度不等的同類陣列都通用。如要指定長度可以設定另乙個引數來傳遞陣列元素的個數。

【例5.2】字元陣列與字元陣列相連線。

#include

using namespace std;

void strcat(char s,char ct)

int main (void)

i++;                                   //無衝突,安置下一行皇后

if(i<8) continue;

for(j=0;j<8;j++) cout

total++;                               //方案數加1

if(total%5==0) cout

i=7;                           //此處是製造機會,如不成功則回溯,關鍵一步

}else                                     //當前行皇后無法安置,回溯

else queen[i]++;             //前一行皇后右移一列}}

}

指標作為陣列元素

include int main char name b 255 char name c 255 char name d 255 定義四個字元指標分別指向四個陣列 char a name a char b name b char c name c char d name d 列印第乙個陣列和指標位址...

陣列作為引數中的陣列元素引數

陣列作為函式引數 呼叫有參函式時,需要提供實參 可以是常量 變數或者表示式。陣列元素的作用與變數相當,所以一般來說,凡是變數可以出現的地方,都可以用陣列元素代替。此外,陣列名也可以作實參和形參,傳遞的是陣列第乙個元素的位址。陣列元素作函式實參 陣列元素可以用作函式實參,但是不能用作形參。因為形參是在...

Matlab 函式作為陣列元素 報錯 陣列維度不一

本人正在基於matlab學習非線性規劃,在程式設計時碰到了乙個非常詭異的錯誤,經過不斷debug才得以解決。具體情況是這樣的 我需要把非線性規劃的兩個限制條件寫入乙個陣列,但是debug的時候它死活報錯 陣列維度不統一 可是之前本人在練習線性規劃的時候,也把若干個限制條件寫入了乙個陣列,那個時候是正...