Проблема определения аргумента Си - PullRequest
0 голосов
/ 26 мая 2011

Когда я хочу передать «char (*c)[10];» в качестве параметра, какой аргумент я должен определить в своем определении функции?

Я имею в виду, если у меня есть функция:

void foo(*****) { ... }

Я хочу передать ему char (*c)[10];, так что я пишу вместо *****?

Ответы [ 3 ]

5 голосов
/ 26 мая 2011

Это должно работать нормально:

void foo(char (*c)[10]);
1 голос
/ 26 мая 2011

Определите функцию как:

void foo(char (*c)[10])
{
    for (int i = 0; i < sizeof(*c); i++)
        printf("%d: %c\n", i, (*c)[i]);
}

Используйте функцию как:

int main(void)
{
    char a[10] = "abcdefghi";
    char (*c)[10] = &a;
    foo(c);
    return(0);
}
1 голос
/ 26 мая 2011

Вы должны быть в состоянии передать это просто, как вы объявили:

void foo(char (*c)[10]);

И назвать это как:

foo(c);

Это лучший пост на эту тему: C указатели: указатель на массив фиксированного размера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...