星期一, 2月 27, 2017

[ C ] 指標概念


Pointer 比較適合的名字是指向(point)記憶體的位置。
像是一個銀行內有不同大小的保險箱,每一個保險箱都有自己的位置,讓大家可以快速的找到。
所以可以傳pointer到function裡,裡面存著memory address,就可以直接修改他所指向位置的值。

宣告指標的方式:
<variable_type> *<name>;

宣告一個int的指標變數來存放位址
int *BoxPosition;

宣告一個int來存值
int Box;
Box = 1234;

把Box的位址給BoxPosition(&是拿取位址)
BoxPosition = &Box;

再用*把位址所存的值給拿出來
printf("%d\n",*BoxPosition);

SourceCode

這是ptr指向一個int大小的memory address。
int *ptr = malloc( sizeof(int) );

那如果是sizeof(*ptr)呢?
int *ptr = malloc( sizeof(*ptr) );

因為ptr是指向一個int的memory address,而*ptr是一個int值,
所以用sizeof(*ptr)結果也是一樣會回傳一個int size。

最後記得釋放空間。
free(ptr)

Reference

沒有留言: