如何在C中声明指向字符数组的指针?

如何在C中声明指向字符数组的指针?

我想我会给出这个部分答案:

  1. 这是一个指向char数组的指针(我假设一个10元素数组):

     char (*x)[10]; 

    让我们从基础知识中分解出来:

     x 

    是一个指针:

     *x 

    到一个数组:

     (*x)[10] 

    char的:

     char (*x)[10] 
  2. 但是,大多数情况下,您并不真正需要指向数组的指针,而是需要指向数组第一个元素的指针。 在这种情况下:

     char a[10]; char *x = a; char *y = &a[0]; 

    xy都是你正在寻找的,并且是等价的。

  3. 提示:了解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