C語言中 * 和 &的實際理解
& 是位操作運算子 *代表指標
在C語言中
&可以用來拿到變數在記憶體中儲存的地址
*可以用來拿到對應地址中的具體內容
比如 :
int a=123;
直接printf printf("a = %d",a); 可以直接獲得 列印 123 內容
直接 printf printf("a = %p",&a); 列印的地址是 0x.............一個十六進位制的地址
那麼我們定義一個指標變數
int *b = NULL;
b = &a; //*b代表指標變數 而 b只能賦值為地址
當我們想要拿到指標 *b 中的內容的時候 printf("%d",*&b); 列印的結果與a變數是一樣的
在之前 我們已經把變數a的值賦給了*b
現在 *b的值也就是 123
如果我們對 *b的值進行重新賦值
*b = 512;
那麼列印結果
printf("a = %d\n",a);
printf("b = %d\n",*b);
// a = 512 b = 512;
為什麼會這樣呢?
因為在賦值之後 指標*b 指向 變數a 這個時候 相當於 指標*b直接指向了 a的記憶體 所以 對指標*b做修改的時候就是對那塊記憶體中的內容進行修改 所以修改了 *b後 變數a中的內容也也會被修改
最終總結我的理解 只有一句話
&是為了拿到變數的記憶體地址 而 *就是為了拿到對應記憶體地址中的內容
相關文章
- C語言中的#和##C語言
- C語言中continue的理解(fishing_1)C語言
- c語言中的getchar()和EOFC語言
- C語言中“陣列名”和“&陣列名”C語言陣列
- C語言中編譯和連結C語言編譯
- C語言中的置0和置1操作C語言
- 乾貨好文帶你理解C語言中的連結串列C語言
- 解析C語言中的sizeofC語言
- C語言中extern的用法C語言
- c語言中的作用域C語言
- 【C】 30_C語言中的字串C語言字串
- C語言中pi=&j和*pi=j的區別C語言
- c語言中作用域和儲存期的區別C語言
- C 語言中的 sscanf 詳解
- C 語言中的 time 函式函式
- static在C語言中的作用C語言
- C語言中函式printf()和函式scanf()的用法C語言函式
- c語言中文和ascii碼字元分離C語言ASCII字元
- C語言中qsort函式的用法C語言函式
- C 語言中 static 的作用介紹
- C語言中的資料型別C語言資料型別
- c語言中sizeof詳解C語言
- 在C語言中實現泛型程式設計C語言泛型程式設計
- C語言中volatile關鍵字的作用C語言
- C語言中函式的返回值C語言函式
- 淺談C語言中函式的使用C語言函式
- C語言中結構體感悟C語言結構體
- c語言中const修飾符C語言
- c語言中%f輸出double型和float型值C語言
- c語言中自動儲存期和靜態儲存期C語言
- c語言中的三種迴圈語句結構C語言
- 用“揹包”去理解Go語言中的閉包Go
- 理解 Go 語言中的組合字面量(Composite Literal)Go
- C語言中容易混淆的const關鍵字C語言
- C語言中Pointer, Array,String and Structures的區別C語言Struct
- C語言中關鍵字typedef、enum的使用C語言
- c語言中的變數儲存區域C語言變數
- c語言中返回整數值的長度C語言
- c語言中陣列的三種型別C語言陣列型別