搜尋

首頁  >  問答  >  主體

int *(*a[5])(int, char*); 这句C++语句怎么理解?

ringa_leeringa_lee2803 天前546

全部回覆(4)我來回復

  • PHP中文网

    PHP中文网2017-04-17 13:57:19

    你的理解有誤

    int * (*a[5])(int , char * )
    a 是一个长度为5的数组, 数组的每个元素是一个函数指针
    函数指针的类型
    返回值 是 int * , 带两个参数 int , char *

    對於函數指標

    B (*A)(int , char * )
    括号外的是函数部分, 括号内的是指针部分

    對於變數

    int *(*a[5]) 其实等同于 int **a[5];

    a 是 長度為5的數組,數組每個元素是int**

    *運算子的結合順序是從右到左,第二個*要比第一個*先結合,所以要不要括號無所謂

    至於表達 指向「長度為5的指標數組」的指標(也就是二維陣列中列長度為5的行首指標)?
    先想想 指向 {長度為5的陣列} 的指標怎麼表示

    int  (*a)[5];// 此时的括号才有意义,没括号,[] 优于 * 结合

    a 是指向數組 ,數組的每個元素 是 int

    int* (*a)[5];

    a 是指向數組 ,數組的每個元素 是 int *

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 13:57:19

    對於這種問題,採取逐步分解的做法
    int* (*a[5])(int,char*)
    可以看做是
    int* F(int,char*),其中F等價於(*a[5])
    這裡F就是一個回傳值型別為int*,參數型別為(int,char*)的函數。
    也就是說*a[5]為一個函數,因為運算子優先順序的原因,這裡可以寫作*(a[5])
    那麼就是說a[5]是一個函數指針,指向型別為int*()(int,char*)的函數。
    所以a其實是一個數組,其有5個元素,每個元素都是一個函數指標。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:57:19

    a是一個數組,包含5個元素,每個元素都是一個指針,指針指向函數,函數接收int,char*兩個參數並且回傳int*。簡單來講,a就是一個函數指標數組

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 13:57:19

    int* (*a[5])(int,char*);

    int* (*F)(int, char*)是定義函數指標型別F, 此函式帶來兩個參數(int, char*), 傳回int*;
    F a[5]是定義長度為5的數組a,其元素為型別F;

    所以其實是定義了陣列a, 長度為5,成員型別為函數指標.

    回覆
    0
  • 取消回覆