如何在C中声明指向字符数组的指针?
答案 0 :(得分:10)
我想我会给出部分答案:
这是一个指向char
s数组的指针(我假设一个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
让您更轻松地解决这些问题。
答案 1 :(得分:3)
您可以将其声明为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