理解指標 (二)

2021-10-05 19:16:52 字數 869 閱讀 5057

指標:理解指標 (一)

再次理解指標:理解更深刻

//盡可能等定義了物件之後,再定義指向它的指標,確保指標初始化

//先定義乙個變數p

char c; //char型變數c

//再定義乙個指標p

char

*p; //char型指標p

//初始化指標(p指向c)

p =&c; //取變數c的位址賦值給指標p

//賦值

c = 『a』; //直接給變數c賦值字元a

*p = 『a』; //通過指標給變數c賦值字元a

//最後兩行**效果一樣

變數p被宣告為指標變數,*p是取指標變數p指向的位址中的值,所以能通過給*p賦值改變的是指標p指向的位址中的變數的值。

通過指標可以操作記憶體位址。這樣如果乙個被調函式的形參是指標的話(指標就需要傳入乙個位址),函式就不需要指定返回型別了,因為通過指標直接操作了變數記憶體位址,相當於改變了原件。例如:

void

max(

int i,

int j,

int*ptr)

現在回想起來,scanf()這個輸入函式就是通過直接操作變數的記憶體位址,完成了對變數的複製。

空指標沒有指向任何記憶體位址,不能操作記憶體。

指標加減主要用於字串。

指標也是記憶體變數,任何型別的指標占用8個位元組的記憶體。

理解函式指標 二

1.定義函式的指標型別 就像自定義資料型別一樣,我們也可以先定義乙個函式指標型別,然後再用這個型別來申明函式指標變數。乙個自定義資料型別的例子。typedef int pint 為int 型別定義了乙個pint的別名 intmain 看一下函式指標型別的定義及使用 void myfun int x ...

理解二級指標

我在一篇教程中看到下面這段,它描述指向指標的指標是如何運作的。引用文章相關段落如下 1 2 inti 5,j 6,k 7 int ip1 i,ip2 j 現在我們可以這麼寫 1 int ipp ip1 那麼現在指標 ipp 指向了 ip1,ip1 指向了 i。ipp 就是 ip1,ipp 就是 i,...

二級指標理解

1 先看一反例 目的 通過函式mymalloc改變指標p的值 include include void mymalloc char s 我想在函式中分配記憶體,再返回 void main 以上例子中,p實際還是null,p的值沒有改變,為什麼?答 我們的目的就是要改變指標p的值,因為p本身就是指標,...