关于int*(*ptr)[4];的几问
1.它是什么意思?
2.指针的类型是什么?
3.指针所指向的类型是什么?
4.第一个*号是表示数组中的元素为数组吗?
5.式中()是什么意思?去掉又是什么意思?
6.式中数组名是什么?
 

解决方案 »

  1.   

    int*(*ptr)[4];是说明这是个二维数组的整形指针,括号表示每个都友四个
      

  2.   

    定义一个函数指针数组,他有4个元素,所指向的函数的返回类型是int *
      

  3.   

    不知道还是不要说得好,有误导嫌疑,关外才子说得对,ptr是一个有四个元素的数组,元素类型是函数指针,这个函数没有参数,返回int *。
      

  4.   

    int (*ptr)[4]是一个指向二维数组的指针,其中[4]是二位数组的列数。
    int * (*ptr)[4]是一个指向指针的指针,它指向的指针为一个指向列数为4 的二位数组的指针。
      

  5.   

    严重同意bauhaus(乱发)的意见和答案
      

  6.   

    int *ptr[4]是一个指针数组,数组元素的个数为4。
    int **ptr[4]是一个指向指针数组的指针。
      

  7.   

    ptr是一个指向数组的指针,它怕指向的数组是一个指针数组
      

  8.   

    我知道int*(void *ptr)[4];什么意思
    但不知道int*(*ptr)[4]是什么意思
      

  9.   

    hehe,初看是很像一个函数指针数组();我知道一种方法可以定义函数指针数组
    typedef int (CALLBACK * Connect)();Connect a[4];但是直接定义的话是不是这样
    (int CALLBACK * ptr)()[4];//???
      

  10.   

    1.它是什么意思?
    一个存放了四个函数指针的数组2.指针的类型是什么?
    指针的类型为函数的入口地址3.指针所指向的类型是什么?
    指针所指向的分别是四个函数的入口地址4.第一个*号是表示数组中的元素为数组吗?
    第一个*号表示函数的返回值是int *5.式中()是什么意思?去掉又是什么意思?
    加()用于表示ptr是函数指针,
    例如:
    int* fun1()
    { }
    ...
    int* fun4()
    ptr[0]=fun1;
    ...
    ptr[3]=fun4;如果不加则表示一个存放4个指针的指针的数组
    例如:
    int *p1;
    ...
    int *p4;
    int** ptr[4];
    ptr[0]=&p1;
    ...
    ptr[3]=&p4;6.式中数组名是什么?
    数组名为ptr,即为第一个函数指针元素
      

  11.   

    指针的类型就是函数的地址,它并不能用int,double这样一些类型来描述,函数名就是函数的入口地址,就像数组名就是数组首元素的地址一样
      

  12.   

    yinleish(lovebubble)兄:
          关于int*(*ptr)[4];
    指针的类型是int*(*)[4];
    指针所指向的类型是int*()[4];
    这两个应是不同的值,请问怎样解释?
      

  13.   

    让编译器来解释吧,以下代码在 warning level 4 下是可以无错通过的:int*(*ptr)[4];
    int* intArray[4];ptr = &intArray;
      

  14.   

    1.它是什么意思?
    指向Array[4]数组的指针,数组类型是 int*2.指针的类型是什么?等价于:
    typedef int* PINT;
    typedef PINT PINT4[4];
    typedef PINT4* PTR_TYPE;
    PTR_TYPE ptr;3.指针所指向的类型是什么?
    如上4.第一个*号是表示数组中的元素为数组吗?
    元素为指针类型 PINT5.式中()是什么意思?去掉又是什么意思?
    去掉是一个数组,元素是 int**;
    typedef int** PPINT;
    typedef PPINT PPINT4[4];
    因为 C++ 代码中可以插入任何空格,都写成 int* *[4] 就不能区别了。6.式中数组名是什么?
    命名...参考 2 吧
      

  15.   

    btw: int* func(void) 的指针数组应该是 int* (*ptr[4])(void);
      

  16.   

    同意ln355Hz的见解,这不是函数指针,而是一般的数据指针。
    int* (*ptr)[4];
    看成
    typedef int* AAA[4];
    AAA* ptr;