int *p = null 和 *p = null 的區別
int *p = null;
可以通過偵錯程式檢視p的值為 0x00000000 。這句**的意思是:定義乙個指標變數p,其指向的記憶體裡面儲存的是 int 型別的資料;在定義變數p的同時把p的值設定為 0x00000000,而不是把 *p 的值設定為0x00000000 。這個過程叫初始化。
int *p;
*p = null;
第一行定義了乙個指標變數p,其指向的記憶體裡面儲存的是int型別的資料;但這時候變數p本身的值是多少不得而知,也就是說現在變數 p 儲存的可能是乙個非法的位址。第二行**,給 *p 賦值為null;但由於 p 指向的記憶體有可能是非法的,所以偵錯程式可能會報告乙個記憶體訪問錯誤。
將**改寫:
int i = 10;
int *p = &i;
*p = null;
如何將數值儲存到指定的記憶體位址
往記憶體位址0x12ff7c上存入乙個整數型0x100
int *p = (int *)0x12ff7c;
*p = 0x100;
或者:
*(int *)0x12ff7c = 0x100;
a 和 &a 的區別int main()
; int *ptr = (int *)(&a + 1);
printf("%d, %d\n", *(a + 1), *(ptr - 1));
}
讀書筆記《c語言深度解剖》 4
10.struct關鍵字 這裡struct關鍵字講解得比較少,主要有3點 1 空結構體的大小為1 在gcc下我的輸出是0 2 柔性陣列 在c99中,允許結構最後乙個元素是乙個大小未確定的陣列,這個陣列叫做柔性陣列。但是柔性陣列前面必須至少有乙個其他成員。用sizeof返回結構體大小的時候,並不包含柔...
C語言深度解剖讀書筆記1
關鍵字 意義關鍵字 意義auto 宣告自動變數,預設時編譯器一般預設為auto register 宣告暫存器變數 int宣告整型變數 const 宣告唯讀變數 double 宣告雙精度變數 volatile 說明變數在程式執行中可被隱含地改變 long 宣告長整型變數 typedef 用以給資料型別...
C語言深度解剖讀書筆記 3 預編譯處理
1.編譯過程的簡介 預編譯 a.處理所有的注釋,以空格代替。b.將所以 define刪除,並展開所有的巨集定義,字串替換。c.處理條件編譯指令 if,ifdef,elif,else,endif d.處理 include,並展開被包含的檔案,把頭檔案中的宣告,全部拷貝到檔案中。e.保留編譯器需要使用的...