C語言深度解剖讀書筆記3

2021-09-03 07:33:01 字數 819 閱讀 6736

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.保留編譯器需要使用的...