Как создать новый массив, но использовать ту же переменную в C? - PullRequest
0 голосов
/ 20 февраля 2012

Причина, по которой я застрял в этом, заключается в том, как С обрабатывает массивы, что связано с указателями, в которых я новичок. Это мой случай (не совсем моя проблема, а упрощенный случай):

char *keywords[k_num_of_keywords];
for(int i = 0; i < k_num_of_keywords; i++) {
    char temp[] = "float";
    keywords[i] = temp;
}

В этом случае он поместил бы float во все индексы, но, что более важно, тот же адрес, где находится строка «float». Мой случай немного отличается, потому что я хочу автоматизировать инициализацию нового массива char для каждого индекса, но по-прежнему использовать одну и ту же переменную, а не тот же адрес в каждом индексе. Как я могу сделать это в цикле for?

1 Ответ

0 голосов
/ 20 февраля 2012

Вы должны выделить память для каждого элемента для «ключевых слов», например:

char *keywords[k_num_of_keywords];
for(int i = 0; i < k_num_of_keywords; i++) {
    char temp[] = "float";
    int len = strlen(temp);
    keywords[i] = (char *)malloc(sizeof(char) * (len + 1));
    memcpy(keywords[i], temp, len + 1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...