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

时间:2012-03-19 23:30:28

标签: c arrays pointers

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

2 个答案:

答案 0 :(得分:10)

我想我会给出部分答案:

  1. 这是一个指向char s数组的指针(我假设一个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让您更轻松地解决这些问题。

答案 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