Как объявить указатель на массив символов в C? - PullRequest
3 голосов
/ 20 марта 2012

Как мне объявить указатель на массив символов в C?

Ответы [ 2 ]

10 голосов
/ 20 марта 2012

Полагаю, я дам ответ по частям:

  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];
    

    Либо x, либо y - это то, что вы ищете, и эквивалентны.

  3. Подсказка. Узнайте о cdecl, чтобы облегчить эти проблемы.

3 голосов
/ 20 марта 2012

Вы можете объявить его как 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...