Как получить указатель на массив? - PullRequest
0 голосов
/ 13 июля 2020

У меня есть такой массив:

    const char arg_arr[][100] = {
        "a",
        "b",
        "c",
        "d",
    };

, а потом у меня есть такой метод ParseCmdLine(const char *argv[]);

Итак, чтобы передать мой arg_arr, мне нужно получить указатель на это.

Я пытаюсь вызвать этот метод таким образом ParseCmdLine(*arg_arr) или вот так ParseCmdLine(&arg_arr), но он не работает.

Вопрос - как передать этот arr как указатель ?

Ответы [ 4 ]

3 голосов
/ 13 июля 2020

Изменить:

 const char arg_arr[][100] = {
 ...
};

Кому:

 const char *arg_arr[] = {
 ...
};
2 голосов
/ 13 июля 2020

arg_arr - это постоянный массив массивов char, который отличается от того, что ожидает ParseCmdLine: указатель на массив указателей на постоянные char массивы.

Вы должен определять arg_arr следующим образом:

const char *arg_arr[] = {
    "a",
    "b",
    "c",
    "d",
    NULL
};

и передавать его напрямую как ParseCmdLine(arg_arr).

Обратите внимание, что ParseCmdLine должен иметь способ узнать, сколько элементов присутствует в массив. Либо передайте этот счетчик как дополнительный аргумент (argc), либо добавьте конечный указатель NULL после последней строки, как показано выше, либо и то, и другое, как это делается для аргументов функции main().

0 голосов
/ 13 июля 2020

Как получить указатель на массив?

Доступные варианты, касающиеся того, что вы предоставили (без изменения кода):

Численно:

enter image description here

Alphabetically:

enter image description here

Вот руководство, которое, я думаю, может помочь.

0 голосов
/ 13 июля 2020

Имя массива, по сути, является адресом его первого элемента .

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