我该如何在C语言中声明一个字符数组的指针?
我想我会分几个部分来回答:
这里是一个指向 char
数组的指针(我假设它是一个包含10个元素的数组):
char (*x)[10];
让我们从基础开始逐步分解:
x
是一个指针:
*x
转换为数组:
(*x)[10]
有关 char
的:
char (*x)[10]
然而,大多数情况下,您并不真正需要一个指向数组的指针,而是需要一个指向数组第一个元素的指针。在这种情况下: char a[10];
char *x = a;
char *y = &a[0];
你要找的是x
或y
,它们是等价的。
提示:学习cdecl
可以让这些问题更容易解决。
extern char (*p)[];
,但这是一种不完整类型。当然,这是因为C语言没有通用的“数组”类型,只有特定大小的数组才是完整的类型。
以下代码可以正常工作:
extern char (*p)[];
char arr[20];
char (*p)[20] = &arr; // complete type now: p points to an array of 20 chars