1. 數組Ⅰ
數組是彙總資料類型, 通過數組名和索引,訪問多個相同類型的變數。
數組訪問通過中括弧和索引表示變數,索引通常從0開始;
數組的索引可以是非常量整型值,但數組的長度必須是常量整型值;
陣列變數的類型可以為任何類型,包括基礎資料型別 (Elementary Data Type)和結構體;
2. 數組Ⅱ
1)數組初始化,可以通過括弧對每個變數進行賦初值,亦可以一個個賦值;並且可以部分賦值:
2)省略數組長度
括弧賦值,可以省略數組的長度,預設賦值的個數為數組的長度;
可以通過sizeof求數組的個數:
3)數組與枚舉:
數組的長度和訪問索引可以通過枚舉來表示:
3. 數組與for迴圈
數組最常和for迴圈打交道,如:
通常操作,包括尋找值(最大、最小)、計算值(平均、總和)和重排列(從大到小、從小到大)
注意:越界問題,應謹慎。
4. 使用選擇排列法重排數組
選擇排列法:從0位開始,尋找最小值,然後與0位交換;然後在從1位開始,尋找最小值,與1位交換;依次迭代。
5. 多維陣列
可以聲明多維陣列,可以括弧賦初值;對於二維,第二維是忽略的,可以省略第一維個數,但不能兩者都省略;可以統一賦初值為0,但注意維長度。
通常訪問二維數組,使用2個變數,一個是行索引,一個是列索引;
可以使用多重迴圈,訪問二維數組;
6. C 形字串
1)之前的cout可以輸出字串:
在C和C++中,字串看作是字元數組,字元數組以結束符號'\0'結束,即ASCI碼的0。
就如通常的數組一樣,字元數組一旦聲明,其長度是不可改變的;
可以使用[]來單獨改變某個字元;
字元數組,遵從數組的所有規則,如:
2)緩衝和緩衝溢出
當輸入的字元個數超過字元組的長度,就會產生緩衝溢出;通常需要保證緩衝的足夠大小;
一般這樣的輸入,空格作為結束輸入標誌,通過以下方法,可以輸入包括空格:
3)字串操作
包括複製、串連、比較和求長度。
strcpy(dstStr,srcStr) ;//覆蓋
strcat(dstStr,srcStr) ;//直接在dstStr後面加上srcStr,會出現溢出異常
strncat(dstStr,srcStr,n);//只複製srcStr的前n個字元加到dstStr,會檢查緩衝大小
strcmp(str1,str2);//如果相等,返回0
strncmp(str1,str2,n);//比較前n個
strlen(str);//擷取字串長度
4)標準字串
std::sring
可以通過getline來擷取包括空格是輸入:
7. 指標介紹
1)指標-承載其他變數的地址。
例如:
星號置於類型和指標名稱之間,就是聲明了一個指標變數;至於星號偏向哪邊,都可以,每個人都有自己的習慣;星號不屬於指標變數的名稱。
賦值給指標變數,值必須是地址;可以使用取地址運算子-&來擷取:可以理解為指向/取地址
指標變數的類型必須匹配執行的變數類型:
2)解引用指標
指標指向的是一個地址,另一個通常的做法是取該地址的值,使用-*來擷取指標指向的值;
所以,pnPtr等同於&nValue,而*pnPtr等同於nValue ;
給*pnPtr賦值,就如同給nValue賦值:
此外,指標是可以改變指向其他變數的。
3)null 指標
null 指標-不指向任何變數的指標,預設地址為0;
在C語言中,null 指標是為NULL,如:
null 指標通常出現在條件陳述式中;
null 指標通常使用在動態記憶體分配中。
4)指標的大小(位元組數)
指標指向的是CPU儲存空間的地址,位元組數依賴於CPU機器,通常是一樣的;如32的CPU,指標為32位;而64位的CPU,指標則為64位。
可以通過sizeof(指標名)來擷取指標的位元組數:
8. 指標、數組和指標運算
在數組中,數組名實質就是執行數組第一個元素的指標:
2)指標運算
在C語言中,允許對指標進行加法和減法的運算;
pnPtr+1,只是將指標指向記憶體中的下一個地址;並且,返回的不是當前地址的下一個地址,而是當前類型之後的下一個對象的地址;
如pnPtr+3,若當前是32位的,整型數為4個位元組,則運算後的地址是12個位元組後的地址;
如:
多數的用法是++,在數組中,逐一查看數組;
3)指標運算訪問數組
因為*比+有更高的優先順序,所以注意要加括弧來確定;
如:
9. 使用new和delete進行動態記憶體分配
通常,動態確定數組的長度是有很大意義的,可以有效利用空間;
2)動態為單個變數分配記憶體空間
3)動態為數組分配記憶體空間
4)記憶體流失
動態記憶體直到程式結束或顯式釋放,才執行回收;
如果動態分配了,而沒有顯式回收釋放記憶體;則該記憶體依然為程式所佔據,這樣就造成了記憶體流失;
程式佔據自由的記憶體空間。
5)null 指標Ⅱ
null 指標,亦可以理解為-還沒分配記憶體。
可以通過判斷指標是否為空白指標,再而確定分配記憶體;
通常最好的習慣是,沒有賦值的指標都設為空白指標:
10. 指標和常量
就如其他變數一樣,指標亦可以聲明為常量;指標和常量比較容易混淆;使用關鍵字const。
1)const在*和指標變數名稱之間:常量指標在聲明時指向一個的地址,並且它的值不可變的;
2)const位於類型之前,這樣指標變數就為常量,不能改變其指向:
但是,指向的是非常量指標時,可以重新指向:
3)常量指標指向一個常量值時,2者都不可以改變:
常量指標常用於傳遞給函數的參數中。
11. 引用
引用,即其他變數的別名;意為引用於……;使用關鍵字&
那麼&nValue等同於&rnRef。
聲明引用時,必須賦值;其後不能不能重新引用其他;
2)常量引用,不能改變引用的值
3)引用的2個典型應用:函數傳參,防止修改參數的相關值;易訪問層層裡面的值。
12. 引用、指標和成員選擇
1)引用和指標
一個引用就如一個常量指標的解引用;
一個常量引用,就如一個常量指標指向一個常量值;
因為引用只能為合法的記憶體,所以較指標安全;
2)成員選擇
成員選擇,如結構體可以通過'.'來訪問成員,
因.的優先順序比*高,所以必須加括弧;
此外,C++為指標變數提供了->來訪問成員。
13. void指標
void指標,即通常所說的泛型指標;可以指向任何資料類型;
注意:因為void指標預先不清楚其類型,所以不能通過*來解引用,必須在顯式轉換之後才可以訪問:
除非必須,否則盡量避免void指標。
【免責特此聲明:
1)本內容可能是來自互連網的,或經過本人整理的,僅僅代表了互連網和個人的意見和看法!
2)本內容僅僅提供參考,任何參考該內容造成任何的後果,均與原創作者和本部落格作者無關!】