關於函式指標陣列與返回陣列指標的函式

2021-05-10 15:59:14 字數 1077 閱讀 2831

關於函式指標陣列與返回陣列指標的函式

2007-08-15 08:34

int (*a)(int);

int (*p())[10];

第一種情況為陣列裡面是函式指標的情況,因為(int (*)(int))是乙個強制轉換方式, 將裡面的a這個陣列轉換成了乙個函式指標的陣列, 並且該函式是乙個帶乙個整型變數,並且返回乙個整型的函式.

第二種情況為函式返回的為指向乙個一維陣列的指標的情況. 因為(int (*)[10])將其強制轉換成了乙個指標,而該指標則是乙個指向一維陣列的指標.

分別舉兩個例子進行說明:

對於第一種函式指標陣列的情況,如下:

#include

int fun(int a)

int main()

p[10]為乙個指標陣列,而該指標陣列裡面的值為函式指標型別.讓p[0]指向fun()函式.然後再進行呼叫,就可以呼叫到fun()這個函式了.

對於第二種返回陣列指標的函式,如下:

#include

#include

int (*p())[10]

for (i = 0; i < 10; i++)

*(*m+i) = i+1;

return m;

}int main()

其實int (*m)[10];這種方式一般是用來指向乙個二維陣列的,例如

int b[4][10];

int (*m)[10] = b;

其指向二維陣列中的一維.

使用*(*(m+i)+j);這種方式就可以訪問b[i][j]這個元素.而上面的是使用這種方式來指向乙個一維陣列,同樣也是一樣的.只是前面的*(m+i)中的i變為0了.因為只有一維大小.即

int a[10];

int (*m)[10] = &a;

就使得m指向了a這個陣列了.而平時所用的int *p = a;只是讓p指向了a的第乙個元素.比前面的指向一維陣列的指標少了一維.前面的m+1跳過的是10個整型的長度.而後面的p+1則只是跳過了1個整型的長度.

原文出處:http://hi.baidu.com/phps/blog/item/38bec9bf93b3470818d81f78.html

函式指標陣列與返回陣列指標的函式

int a int int p 10 第一種情況為陣列裡面是函式指標的情況,因為 int int 是乙個強制轉換方式,將裡面的a這個陣列轉換成了乙個函式指標的陣列,並且該函式是乙個帶乙個整型變數,並且返回乙個整型的函式.第二種情況為函式返回的為指向乙個一維陣列的指標的情況.因為 int 10 將其強...

c指標陣列與陣列指標與指標函式與函式指標筆記

include include typedef struct t ooxx t ooxx,pt ooxx 測試陣列指標 void test ooxx arrayp t ooxx p int num 測試指標陣列 void test ooxx parray t ooxx p,int num 測試函式指...

關於指標陣列指標做為返回型別的函式

今天被一哥們叫了看了一段程式。裡面有這樣一段 c c code int func int n 3 反應如下 這是乙個陣列。這是乙個指標陣列。這是乙個函式指標陣列。到後面又看到然後有這樣的用法 c c code func n temp 這難道是乙個函式?那麼 3 又表示什麼呢。然後就分析了下。後來才發...