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

2021-05-25 09:53:06 字數 869 閱讀 7239

今天被一哥們叫了看了一段程式。

裡面有這樣一段**:

c/c++ code

int * (*func(int n))[3];

反應如下:

這是乙個陣列。

這是乙個指標陣列。

這是乙個函式指標陣列。

到後面又看到然後有這樣的用法:

c/c++ code

func(n_temp);

這難道是乙個函式???

那麼[3]又表示什麼呢。

然後就分析了下。

後來才發現原來()的優先順序比*高。

那麼這是乙個函式指標的想法肯定是錯的。

下邊寫下午簡單的分析。

int func(int n);

這當然是乙個函式(具有乙個int型引數)。

int (*func(int n));

這是乙個具有乙個int型引數,並且返回值是乙個指標的函式。

int (*func(int n))[3];

這又是什麼意思呢? 先看

int (*arr)[3];

arr是指向 具有三個整型元素陣列的指標。 那麼

int (*func(int n))[3];

是乙個函式指標陣列?沒這種說法。

是乙個陣列指標函式?好像還是不對。。。

因為c/c++裡面不允許返回陣列的。

所以只能是返回型別是乙個陣列指標。

那麼:int * (*func(int n))[3];

這是乙個具有乙個int型引數,並且返回值是乙個指向陣列的指標。

而這個陣列又是具有三個int指標元素的陣列。

函式返回指標是沒問題的,陣列指標、函式指標等都行

返回陣列、函式則不行

僅供聊資。。。。表罵人。

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

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

返回陣列指標

如果我們想定義乙個返回陣列指標的函式,則陣列的維度必須跟在函式的名字之後,然而函式名字之後的是形參列表,所以形參列表應該在陣列的維度之前。返回陣列指標的函式形式如下所示 type function parameter list dimension 下面這個func函式的宣告沒有使用型別別名 int ...

多維陣列(陣列型別,陣列指標,陣列指標型別)

陣列 int myarray100 myarray是陣列首元素位址,myarray 1 步長是四個位元組 sizeof int myarray是整個陣列的位址,myarray 1 步長是100 sizeof int 400個位元組 typedef int myarraytype 100 myarra...