如何在C中声明指向字符数组的指针?
如何在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