C 回顧

1.?數據類型的用途

數據類型的本質:固定大小內存塊的別名

b 和 &b 地址相等

b+1 (跳4字節) 和 &b+1 (跳數組長度字節)

b和&b所代表的數據類型不一樣 --?b代表的數組首元素的地址 --?&b代表的是整個數組的地址


2.變量的本質:內存標號?


3. 內存四區 -- 堆,棧,全局區(常量區),代碼區


4. 函數調用模型:


5. 指針是一種數據類型,是指它指向的內存空間的數據類型。

指針的步長,根據所指內存空間類型來定。


1. 野指針:

<1> 指針變量 和 它所指向的內存空間變量是兩個不同的概念。

<2> 釋放了指針所指的內存空間,但是指針變量本身沒有重置為NULL。

Solution:

<1> 定義指針的時候,初始化成NULL。

<2> 釋放指針所指向的內存空間后,把指針重置為NULL。


2. sizeof() ?&& ?strlen()


3. buf[]直接入棧,*p1指向對應常量區“xxx”,*p2指向malloc出的堆區塊。


4. 兩頭堵算法 + 兩指針字符串翻轉 + 遞歸字符串翻轉


5. 指針輸入和輸出:

輸入:主調函數分配內存,被調函數使用。

輸出:被調函數分配內存,結果通過指針做函數參數,主調函數使用。


Tip: C風格字符串‘\0’

6. 二級指針三種內存模型

<1> 第一種內存模型:--? //指針數組 ?char *p[] ?-- ?p[i] + *(p+i)?

打印 + 排序 ?- ?(交換的是地址)(指針的值)

<2> 第二種內存模型:--? //二維數組? char p[10][30]

打印 + 排序 – (交換的是內存塊) - strcpy

<3> 第三種內存模型:-- ?char **p2 = (char **)malloc(sizeof(char *) *10);

i. ?打印 + 排序 - (交換的是地址)(指針的值)

ii. ?打印 + 排序 - (交換的是內存塊) - strcpy


1. 兩指針挖字符串輸入輸出方法 – 二級指針最復雜場景 ---- 非常重要,尤其判斷細節


2. 多維數組的本質 ?-- ?數組的指針

<1> 二維數組在內存中是線性存儲的。

<2> Memset(c, 0, sizeof(c))


3. 定義數組類型:

<1> 數組類型 (元素類型 和 數組大小決定)

typedef ?int ?(Myarray)[10];

Myarray ?myarray;

<2> 數組指針類型

typedef ?int ?(*PMyarray)[10];

<3> 數組指針變量

i. ?Myarray ?*myarrayPointer;

ii. ?PMyarray ?*parray;

iii. ?int ?(*PMyarray)[10];

?


4. 結構體

定義 + 初始化

5. t1.age = 10;? p->age = 10;

.是尋址操作,計算age相對于t1變量的偏移量 ?-- ?在CPU中進行,沒有操作內存


6. 結構體做函數參數 ?-- ?代碼

Teacher ?array[3]

Teacher ?*pArray;


7.?結構體套一級指針?-- ?char *name

要分配內存,釋放內存。每個節點!!!


8.?結構體套二級指針:

嵌套分配內存,嵌套釋放內存。


1.淺拷貝:

結構體套一個一級指針或二級指針,

編譯器默認只會把指針變量的值copy,不會copy指針變量所指向的內存空間。


2.?結構體中的偏移量:

一旦結構體定義了,則結構體中的成員,內存布局就確定了,可以通過age地址,求大結構體的內存地址。


3.?文件的操作 ?-- ?讀寫磁盤


1. SocketClient動態庫函數 ?-- 代碼

<1> __declspec(dllexport)

<2> 將上層傳遞來的buf,緩存在socketClient的SCK_HANDLE結構體中。

<3> memwatch實現思路有趣

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 指針是C語言中廣泛使用的一種數據類型。 運用指針編程是C語言最主要的風格之一。利用指針變量可以表示各種數據結構; ...
    朱森閱讀 3,479評論 3 44
  • C++對C的加強 0.面向過程–>函數+面向對象–>類和對象 1.namespace命名空間 2.實用性 增加 -...
    錢噓噓閱讀 609評論 0 2
  • __block和__weak修飾符的區別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,376評論 0 6
  • 注:這是第三遍讀《C語言深度解剖》,想想好像自從大學開始就沒讀完過幾本書,其中譚浩強的那本《C語言程序設計(第四版...
    HavenXie閱讀 1,779評論 1 6
  • 2017年2月6日的,PF終于跟她相戀8年的男朋友持證上崗了。他們走得太過艱辛,分分合合,在大家都不抱希望,...
    我是靜大大閱讀 630評論 0 0