C C 筆記(C語言重要問題重講,資料篇)

2021-07-15 04:26:33 字數 1543 閱讀 1786

筆記原在個人印象筆記,現在整理搬運。
1.陣列的坑

int a = ;

printf( "a is %d,&a is %d,a+1 is %d,&a+1 is %d\n" , a, &a, a + 1, &a + 1);

//這裡a 與 &a值是一樣的,都是4127200

//a 代表陣列的首元素位址

//&a 代表整個陣列的位址

2.typedef的使用(這種用法c++會改變)

struct teacher

teacher

//c語言中,要使用必須要struct teacher,這麼搞就不用了。

typedef

struct teacher

teacher;

teacher t;

3.void*可以指向任何位址

void a; //錯誤,不知道如何分配記憶體

void *p = malloc(10);//可以但比較危險。

4.字面量

for(i=0;i<10;i++)

10就是字面量。

變數:一段連續記憶體空間的別名,是乙個門牌號,就沒有變數名。

1.修改記憶體方法

/*直接修改:*/

int a; //申請一塊記憶體,位址12451234(編的)

//我們用a來代表。

a=10; //將位址12451234記憶體中放入10這個數

操縱a僅僅是告訴編譯器,操縱12451234這個空間。執行時就沒有a這個標號了。

/*間接修改:*/

int* p; //申請一塊記憶體,位址11111111(編的)

p = 0x12451234;

//將位址11111111記憶體中放入12451234這個數

*p = 100;

//1.將位址11111111記憶體中的數(12451234)取出

//2.將取出的12451234轉換成記憶體位址

//3.在上面那個記憶體位址中放入100這個數

2.空指標常量(c與c++不同)

0、0l、'\0'、3 - 3、0 * 17 (它們都是「integer constant expression」)以及 (void*)0 (我覺得(void*)0應該算是乙個空指標吧,更恰當一點)等都是空指標常量(注意 (char*) 0 不叫空指標常量,只是乙個空指標值)。至於系統選取哪種形式作為空指標常量使用,則是實現相關的。

一般的 c 系統選擇 (void*)0 或者 0 的居多(也有個別的選擇 0l);至於 c++ 系統,由於存在嚴格的型別轉化的要求,void* 不能象 c 中那樣自由轉換為其它指標型別,所以通常選 0 作為空指標常量(c++標準推薦),而不選擇 (void*)0

C C 筆記(C語言重要問題,結構體篇)

為什麼要寫結構體?因為用c 較多。class用多了,結構體就忘了。回頭一看,結構體原來還有這麼多坑。struct teacher 要使用struct teacher,可以像下面這麼搞,這是最常見用法。typedef struct teacher teacher teacher t 這些使用方式不好,...

C C 筆記(C語言重要問題,指標與陣列篇)

指標的本質就是4位元組。研究指標的步驟 1.別看星,看變數 如int p a 2.兩次取位址無意義,因為 a就是個數。如 a無意義,這麼寫就直接報錯了 指標宣告與使用,星號 表示的含義不同。3.指標宣告時,表示宣告的變數為指標 4.指標使用時,表示操作指標所指向的記憶體空間值。指標使用時,p相當於通...

(零)重要問題

lightgbm,xgboost rf和gbdt的異同 對於id3,c4.5,cart也要了解,對於xgb的演算法原理要充分理解,比如損失函式的推導過程,為什麼要使用二階泰勒展開。最好有一些調參經驗 svm損失函式推導 樸素貝葉斯公式推導與實現 處理不平衡常用方法 卷積層相比fc層有哪些優勢?非線性...