C 學習筆記四 陣列

2021-07-24 19:23:02 字數 2550 閱讀 4649

陣列宣告:

宣告陣列:

typename arrayname[arraysize];            //arraysize指定元素數目,必須是整型常數
例如:

short months[12];     //該宣告建立乙個有12個元素的名為months陣列,每個元素都可儲存乙個short型別的變數
陣列之所以被稱為復合型別,是因為他是使用其他型別來建立的,陣列必須是某種型別的陣列。

可以單獨訪問陣列元素:方法是使用下標或索引來對元素進行編號。c++陣列從0開始編號,使用帶索

引的方括號表示法來制定陣列元素。最後乙個元素的索引比陣列的長度小1。

程式4.1

#include

int main()

; cout

<< "total yams = ";

cout

<< yams[0] + yams[1] + yams[2] << endl;

cout

<< "the package with "

<< yams[1] << " yams costs ";

cout

<< yamcost[1] << " cents per yam."

<< endl;

int total = yams[0] * yamcost[0] + yams[1] * yamcost[1] + yams[2] * yamcost[2];

cout

<< "the total yam expense is "

<< total << " cents.\n";

cout

<< "\nsize of yams array = "

<< sizeof yams;

cout

<< " bytes.\n";

cout

<< "size of one element = "

<< sizeof yams[0];

cout

<< " bytes.\n";

cin.get();

return

0;}

程式給yam的元素賦值時繞了乙個大彎,c++允許在宣告語句中初始化陣列元素:

int yamcosts[3] = ;

只需要提供乙個用逗號分隔的值列表(初始化列表),並將它們用{}括起即可。

如果將sizeof用於陣列名,得到的是整個陣列的位元組數,如果將sizeof用於陣列元素,得到的是元素的

長度(單位為位元組)。

只有在定義陣列時才能使用初始化,此後就不能使用了,也不能將乙個陣列賦給另乙個陣列:

int cards[4] = ;       //okay

int hand[4]; //okay

hand[4]=; //不允許

hand = cards; //不允許

可以用下標分別給陣列中的元素賦值。

初始化陣列時,提供的值可以少於陣列的元素數目。例如,下面的語句只初始化hoteltips的前兩個元素:

float hoteltips[5] =;
如果只對陣列的一部分進行初始化,則編譯器將把其他元素設定為0。因此。將陣列的所有元素都初始化為0非常簡單——只要將陣列的第乙個元素初始化為0即可:

long totals[500]=;
如果初始化陣列時[ ]內為空,c++編譯器將計算元素個數。例如,對於下面的宣告:

short things =;
編譯器將使things陣列包含4個元素。

c++11使用大括號的初始化(列表初始化)作為一種通用的初始化方式,可用於所有型別。

在c++11中新增了一些功能。

1.初始化陣列時,可省略等號:

double earings[4] ;
2.大括號內可不包含任何東西,這將把所有元素都設定為0:

unsigned

int counts[10]= {}; //所有元素都為0

float balances[100] {}; //所有元素都為0

3.列表初始化禁止縮窄轉換:

long plifs = ;           //不允許,將浮點型轉換為整型是縮窄轉換

char slifs ; //不允許,1122011超出了char變數的取值範圍

char tlifs ; //okay

c++標準模板庫(stl)提供了一種陣列替代品——模板類vector,c++11新增了模板類array。

C 學習筆記(四) 陣列

int arr 陣列元素型別 陣列名字 arr new int 5 陣列名字 new 陣列元素型別 陣列元素的個數 為單個陣列元素賦值 arr i i 1 同時為整個陣列賦值 string arrstr new string 在陣列中隨機取值 int random new random next 0...

C語言學習筆記(四)陣列

一 陣列 1.陣列基本使用 陣列的定義格式 型別 陣列名 元素個數 int ages 5 19 19 28 27 26 ages 1 29 ages 0 19 ages 1 19 ages 2 28 ages 3 27 ages 4 26 遍歷 按順序檢視陣列的每乙個元素 for int i 0 i...

C 學習筆記(四)

指標是指向一些記憶體位址的變數,既可以是資料的位址也可以是函式的位址。所以,可以在執行時改變指標指向的內容。c 的成員指標 pointer to member 遵從同樣的概念,除了所選擇的內容是在類中之內的成員指標。這裡麻煩的是所有的指標需要位址,但在類內部是沒有位址的 選擇乙個類的成員意味著在類中...