不要傷害指標(4) 指標和函式的關係

2022-04-10 15:51:27 字數 633 閱讀 7145

可以把乙個指標宣告成為乙個指向函式的指標.

int fun1(char *,int);

int (*pfun1)(char *,int);

pfun1 = fun1;

int a = (*pfun1)("abcdefg",7); //通過函式指標呼叫函式。可以把指標作為函式的形參。在函式呼叫語句中,可以用指標表示式來作為實參。

完全可以想象在記憶體的**區有乙個物件,通過這個物件.某個函式可以執行這個函式。我們這裡的函式名和函式指標都是指向這個物件的。所以下面的幾種呼叫都是合法的。

#include #include 

int func(char *s)

return

num;

}int main(void

)

這個例子中的函式fun 統計乙個字串中各個字元的ascii 碼值之和。前面說了,陣列的名字也是乙個指標。在函式呼叫中,當把str作為實參傳遞給形參s 後,實際是把str 的值傳遞給了s,s 所指向的位址就和str 所指向的位址一致,但是str 和s 各自占用各自的儲存空間。在函式體內對s 進行自加1 運算,並不意味著同時對str 進行了自加1 運算

不要傷害指標(3) 指標和結構型別的關係

可以宣告乙個指向結構型別物件的指標。struct mystruct struct mystruct ss 宣告了結構物件ss,並把ss 的成員初始化為20,30 和40。struct mystruct ptr ss 宣告了乙個指向結構物件ss 的指標。它的型別是mystruct 它指向的型別是mys...

不要傷害指標(6) 指標的安全問題

看下面的例子 例十八 char s a int ptr ptr int s ptr 1298 指標ptr 是乙個int 型別的指標,它指向的型別是int。它指向的位址就是s 的首位址。在32 位程式中,s 佔乙個位元組,int 型別佔四個位元組。最後一條語句不但改變了s 所佔的乙個位元組,還把和s ...

不要傷害指標(2) 指標的型別和指標所指向的型別

在談論指標之前,永遠記住指標的四要素 指標的型別,指標所指向的型別,指標指向的記憶體區,指標自身佔據的記憶體。指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別 指標所指向的型別 指標的值或者叫指標所指向的記憶體區 指標本身所佔據...