筆記原在個人印象筆記,現在整理搬運。
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層有哪些優勢?非線性...