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

2021-05-25 14:49:57 字數 961 閱讀 8546

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個整型的長度.

原文:

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

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

C語言 指標陣列和指標陣列 函式指標和指標函式

在c語言中最令然頭疼的莫過於指標 特別是指標和陣列符號一起出現的 傻傻搞不清楚的原因主要在於運算子的優先順序沒有搞清 指標的運算子 陣列運算子,函式運算子 陣列元算符 運算優先順序和函式運算子 或者說強制改變運算順序符號 都是位於第一優先順序的 而我們的指標運算子則是第二優先順序 所以當出現 int...

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 測試函式指...