v
v指標函式
顧名思義,這是乙個
函式,函式的返回值是
指標(位址)。 ø
定義指標型函式的一般形式為:
型別說明符 *函式名
(形參表)
其中函式名之前加了「*
」號表明這是乙個指標型函式
,即返回值是乙個指標。型別說明符表示了返回的指標值所指向的資料型別。
v總結:int(*p)()和
int *p()區別
1.int (*p)()是乙個
變數說明
,說明p是乙個
指向函式入口
的指標變數,該函式的返回值是整型量,(*p)的兩邊的括號不能少。 2.
int *p()則
不是變數說明而是函式說明
,說明p是乙個指標型函式,其
返回值是乙個指向整型量的指標
,*p兩邊沒有括號。作為函式說明,在括號內最好寫入形式引數,這樣便於與變數說明區別。
ø知識點應用:
在c語言的面試題當中,喜歡對陣列、指標、函式都寫成乙個整體,以此來讓區分面試者學習
c語言的知識點掌握的如何。
下面來舉兩個例子:
1.從變數開始看
2.從變數開始向右看 。
1.int *(*(*fp)(int))[10];
分析:從變數fp開始看,
fp是乙個指標;指標右邊是左括號,分析必然是函式。那麼
fp指標便指向這個函式,函式的形參是
int,
返回值是指標;而這個指標又指向乙個陣列,陣列裡面有
10個元素,每個元素都是
int *型。
2.int *(*(*array[5])())();
分析:array是乙個變數,向右看,是乙個方括號,可見這是乙個陣列。陣列裡面有
5個元素,每個元素都是指標型別;陣列裡面的指標指向乙個函式,函式的形參為空,返回值為指標型別;這個指標又指向乙個函式,函式的形參為空,返回值為
int *型。
ps:這裡面涉及到的陣列、指標、函式。分析起來:
(1)陣列主要分析陣列裡面有
幾個元素
,每個元素是什麼
資料型別
(2)函式
主要分析函式的
形參、返回值
(3)指標
主要分析
指向什麼
總結:各種形式的步長(針對二維陣列
a[4][4])
1.&a:陣列的首位址,步長為乙個陣列。故
&a+1
2.a:陣列的第
0行的位址,步長為一行。故
a+1為指向第一行的位址
3.a[0]:陣列第0行第
0列的位址,步長為乙個元素。故
a[0]+1為第0
行第乙個元素
注意:1.不要把
&a[i]
簡單的理解為
a[i]
的實體地址,因為並不存在
a[i]
這個變數。它只是一種位址的計算方法,能得到第
i行的位址。
2.&a[i]和
a[i]
的值是一樣的,但它的含義卻不同。
&a[i]
或a+i
指向行,而
a[i]
或*(a+i)
指向列。當下標
j=0時,
&a[i]
和a[i]+j
的值相等。
*(a+i)
只是a[i]
的另一種表示形式。在二維陣列中,
a+i=a[i]=*(a+i)=&a[i]=&a[i][0]
即它們的位址值是相等的。
知識應用:
下面是一道又關於二位陣列位址的面試題:
main()
,,};
int i;
int (*p)[4]=a,*q=a[0];
for(i=0;i<3;i++)
for(i=0;i<3;i++)
printf("%d,",a[i][i]);
printf("%d,%d\n",*((int *)p),*q);
}
求printf中的結果:
2 4 7 3,5
這段程式的關鍵**:
if(i==0)
(*p)[i+i/2]=*q+1;
else
p++,++q;
分析:(*p)即指向第
0行的位址,(
*q)指向第
0列的位址
i = 0的時候,就是實現將原來第
0列的數加一賦值給第
0行位址裡面的資料;當i!
= 0的時候,
p++,
q++,就是實現將
p(原來指向第0行
)和q(原來指向第
0列的位址
)向後移動,根據條件,p和
q向後移動兩個位置,則p和
q就分別指向了5和
3.
c語言函式指標與指標函式
include include include using namespace std 1 c語言函式指標 解釋 這是一種很特殊的指標,它的指向是乙個函式的入口 作用 該指標可以接受乙個函式的位址,代表這個函式執行函式的操作 函式指標舉例 下面是乙個函式指標pfunc,它只能指向返回值為float,...
C語言函式指標與指標函式
在大家剛開始學習c語言的時候,總是分不清函式指標和指標函式,就算是知道了它們之間的區別,也不了解它們的使用場景,我寫此部落格幫大家縷一縷,也幫我自己縷一縷 1 函式指標與指標函式的概念以及區別 指標函式 從名字上可以看出,首先它是乙個函式,指標指的是返回值為指標 函式指標 從名字上可以看出,首先他是...
C語言 函式指標與指標函式
寫在前面的話 博主是乙個小菜鳥,並且非常玻璃心!如果文中有什麼問題,請友好地指出來,博主查證後會進行更正,啾咪 每篇文章都是博主現階段的理解,如果理解的更深入的話,博主會不定時更新文章。typedef用於為各種資料型別定義新名字。語法 typedef unsigned char byte 在這個型別...