我试图初始化并打印指向整数的指针数组。
这个初始化方法是否正确,或者当我们声明它为指针数组时,任何其他方法都可以初始化。我们也可以使用传统的数组ar1[][]。

#include <stdio.h>
#include <stdlib.h>

#define NUM_COLS 4
#define NUM_ROWS 3

int main(void)
{
    int rowCnt;
    int colCnt;

    int *ar2[NUM_ROWS]={
                    (int[]){11,12,13,14},
                    (int[]){21,22,23,24},
                    (int[]){31,32,33,34},
                    };

    for(rowCnt=0;rowCnt<NUM_ROWS;rowCnt++)
    {
        for(colCnt=0;colCnt<NUM_COLS;colCnt++)
        {
            printf("%d\t",*(*(ar2+rowCnt)+colCnt));
        }
        printf("\n");
    }
    return(0);
}

最佳答案

此初始化是正确的;复合文本的生存期与它们在中声明的块匹配。在本例中,文本的生存期与ar2相同。
不过,我建议使用一个简单的数组,如dbush的答案中所示,除非您有一些额外的要求(例如需要不同长度的行)。

关于c - 初始化指向整数的指针的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51034145/

10-09 18:22
查看更多