如何在 C 中声明指向字符数组的指针?
我想我会分部分给出这个答案:
这是一个指向
char
数组的指针(我假设是一个 10 元素数组):
char (*x)[10];
让我们从基础开始分解:
x
是一个指针:
*x
到数组:
(*x)[10]
char
s:
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
我可以建议...
声明为:
char* array;
然后定义是:
array = "James Bond";
打印:
printf ("%s \n", array);
有些程序员可能会提到上面的代码不是内存安全的或者定义实际上是重新赋值,所以
char* array = "James Bond";
将是一种普遍做法。