今天被一哥們叫了看了一段程式。
裡面有這樣一段**:
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...