第4章 數組、指針與引用
【考點一】 數組
1.一維數組(1)一維數組的定義一維數組是由具有一個下標的數組元素組成的數組,其定義形式如下:<數據類型><數組名>[<數組長度>];在此,<數據類型>是類型說明符,<數組名>是數組的名字,<數組長度>是任一值為正整數的int型常量表達式。<數組長度>用來指定數組中元素的個數,即數組的大小,數組元素的下標是從0到<數組長度>-1。(2)一維數組初始化與所有的基本數據類型相同,數組也可以在時初始化。當數組聲明沒有給出數組的大小,但是有初始化列表時,數組的大小就由列表中元素的個數來確定。在定義數組時,可以不必給出所有數組元素的初始值,即在定義時部分地初始化數組。(3)訪問數組元素訪問數組元素的語法形式是:<數組名>[<表達式>]在此,<表達式>是非負的int型表達式,稱為下標。下標用于指定所要訪問的數組中元素的位置。在C+ +中,[]是一個運算符,稱為下標運算符。數組下標從0開始,長度為n的數組,其下標的范圍是0到n-1。在數組定義以后,給數組賦值時,必須一個元素一個元素的逐個訪問。
2.二維數組以行和列(即二維)形式排列的固定數目元素的集合,并且組成數組的每個元素的類型都相同,即帶有兩個下標的數組。(1)二維數組的定義定義二維數組的語法是:<數據類型><數組名>[<表達式1>][<表達式2>];在此<表達式1>和<表達式2>是值為正整數的常量表達式。表達式<表達式1>和<表達式2>,分別用來指定數組中行和列的數目。(2)二維數組初始化與一維數組相同,二維數組也可以在定義時初始化。在定義時初始化二維數組要注意:①所有在一行中的元素可以用花括號括起來,并且用逗號分隔;②對于數字類型數組,如果給定的數值不夠,則沒有指定數值的元素將初始化為0。此時,至少應有一個值來初始化二維數組。③當數組聲明時沒有給出第一維的大小,但是有初始化列表時,第一維的大小就由列表中子列表的個數來確定。(3)訪問二維數組元素若要訪問二維數組的元素,必須要給出兩個下標:一個行下標和一個列下標。訪問二維數組元素的語法是:<數組名>[<表達式1>][表達式2];這里<表達式1>和<表達式2>是值為非負整數的表達式。<表達式1>指定行下標,<表達式2>指定列下標。(3)多維數組在C+ +中,對數組維數沒有限制。下面是對數組的通用定義。以n維列表形式排列的固定數目元素的集合,稱為n維數組。定義n維數組的語法是:<數據類型><數組名>[<澩鍤?>][<表達式2>]…[<表達式n>];在此<表達式1>,<表達式2>,…<表達式n>都是值為正整數的常量表達式。訪問n維數組元素的語法是:<數組名>[<表達式1>][<表達式2>]…[<表達式n>];在此<表達式1>,<表達式2>,…<表達式n>都是值為非負整數的表達式。<表達式i>(i=1,2,…,n)用來指定第i維元素的位置。在將多維數組作為函數的形參時,可以不指定該數組中第一維的大小,但是必須指定該數組中其他維的大小。多維數組只可以作為引用參數傳遞給函數,并且函數不能返回一個數組類型的返回值。C+ +對數組下標不做檢查。4.字符數組(1)string類型與字符數組string類型在ANSI/ISO標準C+ +頒布之前,標準C+ +庫并不提供string數據類型。string是一種用戶自定義的數據類型,它由C+ +標準庫來支持,而不是C+ +語言本身的一部分。在使用strign數據類型之前,需要在程序中包含頭文件string并聲明其所在的名字空間std。所有元素都是char類型的數組稱為字符數組。字符數組有如下特點:①數組元素跟一般變量一樣可以賦值、比較、計算等。②數組下標也是從0~N-1(N為數組長度)。③字符數組長度可以顯式給出,也可以隱式得到。④由雙引號括起來的字符串常量具有靜態(tài)字符串數組類型。⑤用字符串對數組初始化時,編譯程序以′\0′作為結束這個數組的標志。因此,數組長度至少要比字符串長度多1。(2)常用字符串函數C+ +提供了一系列字符串操作的函數,這些函數都包含在頭文件cstring中。其中經常會用到的字符串函數包括:strcpy(字符串拷貝,將一個字符串拷貝到另一個字符串變量中)、strcat(字符串連接,在字符串末端添加字符串)、strcmp(字符串比較,用來比較字符串)、strlen(字符串長度,用來求出字符串長度)、和strstr(字符串查找,在一個字符串中查找子串)。①strcpy函數調用strcpy()函數的一般形式為:strcpy(to,from);
該函數將from字符串中的內容復制到to字符串中。請記住,構成to的字符串必須足夠大,以便保存包含在from中的字符串。否則,to字符串將會溢出,這很可能會導致系統崩潰。②strcat函數調用strcat()函數的一般形式為:strcat(s1,s2);
該函數將字符串s2添加到字符串s1的末端;但并不修改字符串s2。必須確保字符串s1足夠大,以便保存它自己的內容和字符串s2中的內容。③strcmp函數調用strcmp()函數的一般形式為:strcmp(s1,s2);
該函數比較兩個字符串,如果兩個字符串相等,返回0。如果字符串s1在字典順序上比字符串s2大,則返回一個正數;如果比字符串s2小,則返回一個負數。注意:函數strcmp比較兩個字符串時所采用的字典順序與真正意義上的字典順序還是有些差別的。實際上,它依次比較兩個字符串相應字符的編碼值(如ASCII碼值)來決定兩個字符串的大小。如,上面比較strcmp(″A″,″a″)的結果變?yōu)?1,因為字符′A′的編碼值為65,而字符′a′的編碼值為97,這與傳統意義上的字典順序不同。④strlen函數調用strlen()函數的一般形式為:strlen(s);
該函數返回字符串s的長度,即字符串中字符的個數(不包括字符串結尾的′\ 0′)。⑤strstr函數調用strstr()函數的一般形式為:strstr(s1,s2);
該函數在字符串s1中從左邊開始查找字符串s2,若查找成功則返回s2在s1中首次出現的位置,否則返回NULL,如果s2為″ ″,則返回s1。 【考點二】 指針指針(即指針變量)是C+ +語言最大的功能之一。一個指針是一個特定類型數據的存儲地址,比如一個變量的地址。與其他類型變量一樣,指針變量也必須要聲明。指針變量聲明的一般形式為:<數據類型>*<變量名>;
其中,<數據類型>是指針所指對象的類型,在C+ +中可以指向任何C+ +類型。<變量名>是指針變量名。指針使用兩種特殊的運算符--*和&。一元(單目)運算符&用于返回其操作對象的內存地址,其操作對象通常為一個變量名。例如:ptr=&total;
希望與更多計算機等級考試的網友交流,請進入計算機等級考試論壇
更多信息請訪問:考試吧計算機等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |