指標
指標是什麼
int detian = 1010 ;
printf("value of detian : %d\naddress of detian : %p\n", detian, &detian) ;
取址運算子&
&detian:detian的記憶體位址
//output
value of detian : 1010
address of detian : 0x16b9c735c
程式碼
輸出
指標是什麼
- 儲存記憶體位址的變數
變數名稱:德田館
變數值:csie_student
位址:辛亥路二段170號
變數名稱:阿伯給的紙條
變數值: 辛亥路二段170號
位址: 羅斯福路四段1號
指標的宣告!
int detian = 1010 ;
int *note ;
note = &detian ;
printf("value of detian : %d\naddress of detian : %p\n", detian, &detian) ;
printf("value of note : %p\naddress of note : %p\n", note, ¬e) ;
指向的變數型別
//output
value of detian : 1010
address of detian : 0x16b9c735c
value of note : 0x16b9c735c
address of note : 0x16b9c7350
指標宣告!
程式碼
輸出
*變數名稱
變數名稱:detian
變數值:1010
位址:0x16b9c735c
變數名稱:note
變數值: 0x16b9c735c
位址:0x16b9c7350
//output
value of detian : 1010
address of detian : 0x16b9c735c
value of note : 0x16b9c735c
address of note : 0x16b9c7350
指標宣告!
輸出
取值運算子*
取值運算子*
int detian = 1010 ;
int *note ;
note = &detian ;
printf("note is pointing to the value : %d\n", *note) ;
*note += 100000 ;
printf("value of detian : %d", detian) ;
程式碼
//output
note is pointing to the value : 1010
value of detian : 101010
輸出
對於*note進行運算會改變detian的值!
陣列中的指標
int arr[3] = {5, 6, 7} ;
for (int i = 0; i < 3; i++) {
printf("arr[%d] | value : %d address : %p\n", i, arr[i], &arr[i]) ;
}
printf("arr points to %p\n", arr) ;
printf("arr[2] | value : %d address : %p\n", *(arr + 2), arr + 2) ;
程式碼
//output
arr[0] | value : 5 address : 0x16f9ef348
arr[1] | value : 6 address : 0x16f9ef34c
arr[2] | value : 7 address : 0x16f9ef350
arr points to 0x16f9ef348
arr[2] | value : 7 address : 0x16f9ef350
輸出
陣列中的指標
arr這個變數名稱本身就是一個指向arr[0]記憶體位址的指標
(arr + 2) 代表的是arr[2]的記憶體位址
pointer in c
By cswagger
pointer in c
- 42