零散的C筆記

2022-09-08 07:54:09 字數 2003 閱讀 1605

▲▼●◆■★

①②③④⑤⑥⑦

如何表達陣列型別

如何表達函式指標

c++編譯器如何管理兩函式之間變數的關係?

如果定義了乙個.cpp,然後再改為.c可能會出現問題,找不到main函式

指標變數和它所指向的記憶體空間變數是兩個不同的概念

指標指向誰,就把誰的位址賦給指標變數

記憶體四區概念:

主調函式(main等)呼叫被調函式

1.main函式分配的記憶體都可以在被調函式裡使用

2.如果在被調函式裡面的臨時區(棧)分配記憶體,主調函式是不能使用的(回憶形參實參交換資料)

★c可以在棧區(臨時區)分配記憶體,但用完後直接被編譯器**

主函式呼叫被調函式,被調函式的返回值先進棧,然後引數,最後執行

函式呼叫模型函式記憶體(四區)模型

形參也是被呼叫該函式的引數,只不過具有對外的屬性

★*p放在等號左邊是去修改記憶體空間的值(寫)

*p放在等號右邊是從記憶體空間裡取值(讀)

*就像一把鑰匙,通過乙個位址,去開啟一扇門,去修改門後面的記憶體空間

多重指標:

對引數的指標型別應該怎麼理解

理解角度需要從兩個角度出發

站在c/c++編譯器的角度 對形參。如果是指標型別,c編譯器只會分配四個自己的記憶體

指標資料型別到底是什麼

指標的資料型別實在它所指向的記憶體空間的資料型別

指標的資料型別具有依附特性(char、int、double……)

有關字面量的理解:

常量不能取位址嗎?

int* a=&10;//10是字面量 不能取位址,沒有放在堆疊、全域性區,可以按照放在**區之類的區域內理解它

暫存器內的東西不能取位址

向null空間寫資料 讀資料;

char* p=null;

*p=100;

向自己不知道的記憶體空間寫資料

char *p=0x77;

*p=100;

指標是為記憶體服務的,沒有記憶體哪來的指標;

不從記憶體四區的角度看,講指標等於白講

memcpy()

s指向常量字串,這部分記憶體空間是不可修改的。

s後,s指向的空間是棧空間,是可以修改的。

在c中沒有字串這種型別,是通過字元陣列(char buf[100])去模擬的

字串和字元陣列的區別是不是帶有\0 ?

const int a=10;

int const b=10;

const char* c;

char* const d; //常量指標 d++;(error:常量指標不能++)

const char* const e;

//指標常量

//常量指標

陣列做函式引數會退化為指標

char* buf=

c語言null的巨集定義是0

#define null 0

★不免野指標的方法:

1.初始化時定義指標變數,指標變數賦值成null

2.釋放時,判斷是否為null,不是null則free()

3.釋放完畢以後再賦值成null

陣列和指標做函式引數的等價關係:

出現上圖提示資訊原因:

1.malloc的某個地方越界

2.拷貝資料或分配記憶體不對

C 零散筆記

關於控制項 控制項實質就是乙個類 屬性中的name就是它例項後的變數名 屬性中的其他東西就是類中的變數或函式 例如 可以直接通過name.backcolor color.yellow 來直接操作控制項的背景顏色 color類 裡面封裝的大量的顏色變數 r,g,b 通過color.blue呼叫 col...

Unity零散筆記

1 預處理 在c 中的預處理功能很弱。除了使用 if else end 之外,還可以嘗試使用 system.diagnostics.conditional unity editor 這種屬性條件。2 carontefx外掛程式 這個外掛程式很好,但是不適合做遊戲,它的物理模擬應該是給做電影用的。好像...

C 零散知識

全域性變數的初始化時機 c 是在編譯期初始化,c 是在程式執行時,main 函式之前初始化.不使用中間變數實現 strlen int mystrlen const char str c 語言函式引數入棧順序為從右至左。具體原因為 c 方式引數入棧順序 從右至左 的好處就是可以動態變化引數個數。通過棧...