gpt4 book ai didi

c - 指向二维指针数组的指针

转载 作者:行者123 更新时间:2023-11-30 15:06:15 25 4
gpt4 key购买 nike

如何声明一个指向字符指针的二维数组的指针。喜欢

char *ar[10][10]; 

根据我的理解,这个数组存储为数组的数组,因此 ar 指向一个指针数组,每个指针都指向该数组中的一列。所以它有三层指针。所以应该声明为

char ***p; 

因此 arp 属于同一类型。但是如果我像二维数组一样使用 p ,例如p[0][0],它给出了段错误。为什么会发生这种情况以及声明 p 的正确方法是什么?

最佳答案

声明看起来像这样

char * ar[10][10]; 

char * ( *p_ar )[10][10] = &ar;

例如在 sizeof 运算符中取消引用指针,您将获得数组的大小,因为表达式的类型为 char[10][10]

printf( "%zu\n", sizeof( *p_ar ) );

输出将等于100

例如,要使用指针输出原始数组第一行的第一个字符串,您可以编写

printf( "%s\n", ( *p_ar )[0][0] );

要使用指针输出原始数组第一行的第一个字符串的第一个字符,您可以编写

printf( "%c\n", ( *p_ar )[0][0][0] );

printf( "%c\n", *( *p_ar )[0][0] );

您还可以声明一个指向数组第一个元素的指针

char * ar[10][10]; 

char * ( *p_ar )[10] = ar;

在这种情况下,使用您可以编写的指针输出原始数组第一行的第一个字符串

printf( "%s\n", p_ar[0][0] );

要使用指针输出原始数组第一行的第一个字符串的第一个字符,您可以编写

printf( "%c\n", p_ar[0][0][0] );

printf( "%c\n", *p_ar[0][0] );

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com