这在C int(*ptr[2])[4]中意味着什么;

这在C int(*ptr[2])[4]中意味着什么;,c,pointers,C,Pointers,我想知道这个定义是什么意思 int (*ptr[2])[4]; 如果我打印“ptr”的大小,它显示16。 在我的机器上,整数指针的大小是8,其中整数的大小是4 如果我将ptr重新定义为 int (*ptr[2]); then also, size of ptr is 16. 所以问题是 定义int(*ptr[2])[4]的含义是什么 如何初始化ptr 用于阅读此类声明 int(*ptr[2])[4]是指向4个整数数组的2个指针数组 如果我打印“ptr”的大小,它显示16。另外在我的机器上整数

我想知道这个定义是什么意思

int (*ptr[2])[4];
如果我打印“ptr”的大小,它显示16。 在我的机器上,整数指针的大小是8,其中整数的大小是4

如果我将ptr重新定义为

int (*ptr[2]); then also, size of ptr is 16.
所以问题是

  • 定义int(*ptr[2])[4]的含义是什么
  • 如何初始化ptr
  • 用于阅读此类声明

    int(*ptr[2])[4]
    是指向4个整数数组的2个指针数组

    如果我打印“ptr”的大小,它显示16。另外在我的机器上整数指针的大小是8

    这是因为
    ptr
    是由两个指针组成的数组。

    用于读取此类声明

    int(*ptr[2])[4]
    是指向4个整数数组的2个指针数组

    如果我打印“ptr”的大小,它显示16。另外在我的机器上整数指针的大小是8


    这是因为
    ptr
    是一个由2个指针组成的数组。

    Q2如何初始化ptr?

    例如

    inta[4]={1,2,3,4};
    int b[4]={6,7,8,9};
    int(*ptr[2])[4]={&a和&b};
    int i;
    
    对于(i=0;iQ2如何初始化ptr?

    例如

    inta[4]={1,2,3,4};
    int b[4]={6,7,8,9};
    int(*ptr[2])[4]={&a和&b};
    int i;
    对于(i=0;i
    int(*ptr[2])[4];
    是一个包含2个元素的数组,每个元素的类型为
    int(*)[4]
    ,表示指向包含4个元素的数组的指针

    这等于
    typedef int(*PTR)[4];PTR PTR[2];

    typedef int (*arrayOfNPointers)[N];
    
    So, if this is right, it is a data type describing an array of N pointers to int.
    
    int(*ptr[2])[4];
    是一个包含2个元素的数组,每个元素的类型为
    int(*)[4]
    ,表示指向包含4个元素的数组的指针

    这等于
    typedef int(*PTR)[4];PTR PTR[2];

    typedef int (*arrayOfNPointers)[N];
    
    So, if this is right, it is a data type describing an array of N pointers to int.
    

    此初始化正确吗?
    int(*ptr[n])[m];
    其中
    n
    m
    作为用户输入。此初始化正确吗?
    int(*ptr[n])[m];
    其中
    n
    m
    作为用户输入。