C 指標 陣列 字串結論雜記

2021-09-30 11:05:51 字數 1565 閱讀 4771

1.在陣列做函式形參時,a[3]表示乙個第二維的角標個數是3的乙個陣列,傳入實參b[i][j]時,j=3,而i能滿足函式體裡的語句的需要即可。

2.a[i][j]做函式形參時,實參b[m][n]的要求是n=j且m>=i。

3.作業系統不檢查陣列第一維的邊界,但檢查 二維及二維以上的邊界,或大或小均不行。(針對陣列作函式實參的情況)

char *n;

n="abc";

cout《此時輸出的內容是:abc

5.void型別的指標可以存放位址,但是不能通過void型別的指標去間接訪問乙個物件,想要訪問此物件,需要經過強制型別轉換,然後用另乙個型別適合的指標去訪問。

6.任何指標的值都可以賦給void指標,但除 void之外的指標之間的賦值都要求型別一致

7.對於陣列的元素,其書寫格式的本質就是「 位址[元素]」,其中的「位址」不僅可以是陣列名,還可以用其它的東西代替(例如指標,當然,得保證位址對應一致)。如舉

例:       int a0[3]=;

int a1[3]=;

int*p[2];

p[0]=a0;

p[1]=a1;

cout《注意,類似0018ff44的位址不符合要求,不能直接賦給指標,應該寫成0x0018ff44才能   用來通過型別轉換後賦給指標。(x大小寫均可,無影響。即轉換成16進製制

數)(這條結論僅用於解決疑問,開發過程中最好別用)

9.int(*p)[3][4]=new int[2][3][4]的結果是在p中儲存了陣列首元素的位址,但型別為int[3][4]。

10.「淺拷貝」和「深拷貝」是對含有指標型別資料成員的類所說的。即幾個不同物件(淺拷貝得到)的指標型別資料成員指向同一記憶體。例如,p2由p1淺拷貝而來,那麼p1

的指標型別的資料成員指向的是哪一塊記憶體p2的指標型別的資料成員就指向哪一記憶體。

11.訪問未賦值的指標極有可能導致程式崩潰。(這裡的訪問是指對記憶體產生更改的訪問)

12.給字元陣列賦初值的時候可以將字元和ascii碼混用。

如:char a[20]=;

但不能將這兩者和整體的字串常量混用

13.標頭檔案裡包含了標頭檔案。除了包含了之外,僅僅是#define了      

量。並沒有定義類或函式等等。

14.如果沒有包含標頭檔案,那麼cout《也是會出現這種情況的)

15.宣告了乙個指向乙個類的物件的指標後, 就算該指標沒有被初始化,也是可以呼叫該類的公有函式的,但如果該公有函式訪問了該類的資料成員(由於指標沒被初始化,所 

以資料成員沒被初始化)則會導致程式崩潰,不過編譯時不會報錯。

16.對於乙個三維陣列a[2][2][2],其中a、 a[...]、a[...][...]都是指向相應下一級首元素的指標。當然a[...][...][...]就不是指標了。

17.陣列的...[a]的意義就是先偏移a然後取*

18.string類的物件的型別據對不是char*型別也就是說strcpy(... , ...)不能傳入string的物件。

19.當char*p=0;時cout<

20.宣告引用之後必須初始化。

21.字串中的字元從0開始編碼,0號位置、1號位置、2號位置····。

C 字元 字串 字元陣列 字串指標 指標陣列

一 c 字元 字串 字元陣列 字串指標 指標陣列 前言 一 字元指標 字元陣列 二 字串指標 三 字串 指標陣列 四 常用方法 參考為了深入理解c 並時常回顧學過的知識點,對c 知識點進行記錄總結。參考1字元指標的儲存方式 字元指標變數本身是乙個變數,用於存放字元 字串的首位址。字串本身是存放在以該...

C 字串指標與字串陣列

在做面試100題中第21題時,發現char astr abcdefghijk 0 和char astr 有點區別,以前一直以為是一樣的,但是在該程式中採用字串指標執行一直出錯。後來在網上查查,果然發現大大的不同。分析 當你需要修改字串時,採用指標指向該字串編譯通過但是執行出錯,而採用字串陣列時不會出...

C語言 指標 指標 陣列 字串

位址 在c語言中定義的每乙個變數都擁有屬於自己的儲存單元的位址,通常我們認為乙個變數擁有兩個值,乙個左值 位址 乙個右值 變數的值 在scanf 中使用到的 取位址符 就是向這個位址中輸入資料從而給變數賦值 訪問位址 就需要用到指標,用於儲存位址 對於物件的訪問 1.直接訪問 通過物件名去實現訪問,...