C++学习笔记6[数组]
C++學習目錄鏈接:
C++學習筆記目錄鏈接(持續更新中)
文章目錄
- 一、一維數組
- 1.一維數組的聲明
- 2.一維數組的引用
- 3.一維數組的初始化
- 二、二維數組
- 1.二維數組的聲明
- 2.二維數組的引用
- 3.二維數組的初始化
- 三、字符數組
- 1.字符數組的聲明
- 2.字符數組的賦值方式
- 3.字符串處理函數
- 總結
一、一維數組
1.一維數組的聲明
????在程序設計中,將同一數據類型的數據按一定形 式有序地組織起來,這些有序數據的集合就稱為數組。一個數組有一個統一的數組名, 可以通過數組名和下標來唯一確定 數組中的元素。一維數組的聲明形式如下:
數據類型 數組名 [常量表達式]
int a[10];//聲明一個整形數組,包含10個元素 char name[128];//聲明一個字符數組,包含128個字符 float price[20];//聲明一個浮點型數組,包含20個元素????使用數組的說明:
- (1)數組名的命名規則和變量名相同。
- (2)數組名后面的括號是方括號,方括號內是常量表達式。
- (3)常量表達式表示元素的個數,即數組的長度。
- (4)定義數組的常量表達式不能是變量,因為數組的大小不能動態定義。例如:int a[i];//不合法
2.一維數組的引用
????一維數組引用的-般形式如下:
????數組名[下標]
????例如:
int a[10];//聲明一個整形數組,包含10個元素
a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],是對數組a中10個元素的引用。
????一維 數組引用的說明:
????(1)數組元素的下標起始值為0而不是1。
????(2) a[10]是不存在的數組元素,引用a[10]非法。
3.一維數組的初始化
????數組元素初始化的方式有兩種,- 種是對單個元素逐一賦值,另一種是使用聚合方式賦值。
(1)單一數組元素賦值
a[0]=0就是對單一數組元素賦值,也可以通過變量控制下標的方式進行賦值。例如:
(2)聚合方式賦值
數組不僅可以逐一對數組元素賦值,還可以通過大括號進行多個元素的賦值。例如:
或
char a[]={'a','b','v'};//聲明一個字符數組,編譯器能識別元素個數或
char a[3]={'a','b'};//聲明一個字符數組,包含3個元素,最后一個元素賦值為空,如果是整型數組,則賦值為0 #include <iostream> using namespace std; void main() { char a[3]={'a','b','v'};//聲明一個字符數組,包含3個元素int i=0; cout<<a[i]<<endl;//打印a[0] }二、二維數組
1.二維數組的聲明
????二維數組聲明的一般形式為:
數據類型數組名[常量表達式1][常量表達式2]
例如:
int a[3]4];//聲明具有3行4列元素的整型數組
float myArray[4][5]; /I聲明具有 4行5列元素的浮點型數組
????一維 數組描述的是-一個線性序列,二維數組描述的則是一個矩陣。常量表達式1代表行的數量,常量表達式2代表列的數量。二維數組可以看作是一種特殊的一維數組,如圖所示,虛線左側為3個一維數組的首元素,二維數組是由A[0]、A[1]、A[2]這3個一維數組組成,每個一維數組都包含4個元素。
使用數組的說明:
(1)數組名的命名規則和變量名相同。
(2)二維數組有兩個下標,所以要有兩個中括號。例如:int a[3,4] //不合法
inta[3:4] //不合法
(3)下標運算符中的整數表達式代表數組每一個維的長度,它們必須是正整數,其乘積確定了整個數組的長度。例如:int a[3][4]其長度就是3X4=12。
(4)定義數組的常量表達式不能是變量,因為數組的大小不能動態定義。例如:
int a[]0]; //不合法
2.二維數組的引用
????二維數組元素的引用形式為:
數組名[下標]下標]
二維數組元素的引用和- -維數組基本相同。例如:
a[2-1[22-1]//合法
a[2,3]a[2-1,22-1]//不合法
3.二維數組的初始化
????二維數組元素初始化的方式和一-維 數組相同,也分為單個元素逐一的賦值和使用聚合方式賦值。
例如:
????二維數組中元素排列的順序是按行存放,即在內存中先順序存放第1行的元素,再存放第2行的元素。例如“int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};"的賦值順序是:
先給第1行元素賦值: a[]0)->@[]1]->a[]2]->a[0][3]。
再給第2行元素賦值: a[1][0]->a[1][1]->a[1][2]->a[1][3]。
最后給第3行元素賦值: a[2][0]->a[2][1]~>a[2][2]->a[2][3]。
????使用聚合方式賦值,還可以按行進行賦值,例如:
int A[2][3]={{1,2,3},{4,5,6}};????二維數組可以只對前幾個元素賦值。例如:
int A[2][3]={1,2,3};//相當于給第一行賦值,其他元素為0????數組元素是左值,可以出現在表達式中,也可以對數組元素進行計算。例如:
b[1][2]=A[1][2]/3; /* 將數組行列互換*/ #include <iostream> #include <iomanip>//輸出流控制 using namespace std;int fun(int array[3][3]) {int i,j,t;for(i=0;i<3;i++)for(j=0;j<i;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}return 0; } void main() {int i,j; cout<<"轉換前"<<endl; int A[3][3]={{1,2,3},{4,5,6},{7,8,9}}; for(i=0;i<3;i++) {for(j=0;j<3;j++){cout<<setw(7)<<A[i][j]; }cout<<endl;}fun(A); cout<<"轉換后"<<endl; for(i=0;i<3;i++) {for(j=0;j<3;j++){cout<<setw(7)<<A[i][j]; }cout<<endl;}}三、字符數組
????用來存放字符數據的數組是字符數組,字符數組中的一個元素存放-一個字符。字符數組具有數組的共同屬性。由于字符串應用廣“泛,C和C++專門為它提供了許多方便的用法和函數。
1.字符數組的聲明
????char pWord[11];
2.字符數組的賦值方式
????可以對數組元素進行單一賦值
pWord[0]='a'; pWord[1]='b';????可以對數組元素進聚合賦值
char pWord[11]={'a','b','c','d','e','f','g','h','i','f','j'};????如果大括號中提供的初值個數大于數組長度,則按語法錯誤處理。如果初值個數小于數組長度,則只將這些字符賦給數組中前面那些元素,其余元素自動定義為空字符。如果提供的初值個數與預定的數組長度相同,在定義時可以省略數組長度,系統會自動根據初值個數確定數組長度。
聚合方式只能在數組聲明時使用。例如:
????字符數組不能給字符數組賦值
char A[5]={'a','b','c','d','e'}; char b[5]; A=b;//錯誤 A[0]=b[0];//正確????字符數組常作字符串使用,作為字符串要有字符串結束符“\0”。。可以使用字符串為字符數組賦值。例如:
char A[]="hello world";等于 char A[]="hello world\n";????字符串結束符“\0”主要告知字符串處理函數字符串已經結束了,不需要再輸出了。下面通過實例來看一下使用字符串結束符“\0” 和不使用字符串結束符“\0” 的區別。
/* 未在末尾添加\0*/ #include <iostream>using namespace std;void main() {char A[12];A[0]='a';A[1]='b';printf("%s\n",A); } /* 在末尾添加\0*/ #include <iostream>using namespace std;void main() {char A[12];A[0]='a';A[1]='b';A[2]='\0';printf("%s\n",A); }3.字符串處理函數
????strcat函數
字符串連接函數strcat的格式如下:
strcat(字符數組1,字符數組2)
????其功能是將字符數組2中的字符串連接到字符數組1中字符串的后面,并刪去字符串1后的串結束標志“\0
#include <iostream> #include<string>//導入字符串包using namespace std;void main() {char str1[12],str2[6];cout<<"請輸入str1字符串"<<endl;gets(str1);//輸入str1cout<<"請輸入str2字符串"<<endl;gets(str2);strcat(str1,str2);//字符串拼接puts(str1);//打印}在使用strcat函數時要注意,字符數組1的長度要足夠大,否則不能裝下連接后的字符串。
????不使用strcat拼接
#include <iostream> #include<string>//導入字符串包using namespace std;void main() {int i=0,j=0;char str1[12],str2[6];cout<<"請輸入str1字符串"<<endl;gets(str1);//輸入str1cout<<"請輸入str2字符串"<<endl;gets(str2);while(str1[i]!='\0')//遍歷str1字符串,直到遇到str1中的結束符i++;while(str2[j]!='\0')//遍歷str2字符串,直到遇到結束符標志為止str1[i++]=str2[j++];str1[i]='\0';puts(str1);//輸出str1}????strcpy函數
字符串復制函數strepy的格式如下:
其功能是將把字符數組2中的字符串復制到字符數組1中。字符串結束志“\0”也一同復制。
說明
①要求字符數組1應有足夠的長度,否則不能全部裝入所復制的字符串。
②字符數組1必須寫成數組名形式,而字符數組2可以是字符數組名,也可以是一個字符串常量,這時相當于把一個字符串賦予一個字符數組。
說明
strcpy函數實質上是用字符數組2中的字符串覆蓋字符數組1中的內容,而strat函數則不存在覆蓋等問題,只是單純地將字符數組2中的字符串連接到字符數組1中的字符串后面。
????strcmp函數
字符串比較函數strcmp的格式如下:
strcmp(字符數組1,字符數組2)
其功能是按照ASCII碼順序比較兩個數組中的字符串,并由函數返回值返回比較結果。如果字符串1=字符串2,返回值為0;如果字符串1>字符串2,返回值為- -正數;如果字符串1<字符串2,返回值為一負數。該函數可用于比較兩個字符串常量,或比較數組和字符串常量。例如:
????strlen函數
????測字符串長度函數strlen的格式如下:
strlen(字符數組名)
其功能是測字符串的實際長度(不含字符串結束標志“\0”),函數返回值為字符串的實際長度。
總結
本文講解了C++中的數組
作者:電氣-余登武
總結
以上是生活随笔為你收集整理的C++学习笔记6[数组]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西姆拉条约和麦克马洪线对当前中印边界争端
- 下一篇: 电气论文实现:深度学习分位数回归实现电力