@Maxwell012

Как обращаться к элементам массива через указатель?

Есть функция внутри которой я должен обращаться к элементам буквенного массива через указатель, сам массив передается в качестве аргументов в функцию, как я понимаю надо передать в функцию ссылку на массив что бы потом обращаться к его элементам через указатель, почитав статьи нашел несколько решений, но они почему то не работают.
Вот мой код:
void DeleteWords(char(&s)[n], char (&tmp_word)[20], int size_word)
{
    int start_word = 0, end_word = 0;
    for (int i = 0, tmp = 0; s[i] != '\0'; i++)
    {
        if (*tmp_word[tmp] == s[i])
        {
            if (tmp == 0)
            {
                start_word = i;
            }
            tmp++;
            if (*size_word == tmp)
            {...


Но так выдает ошибку: операнд "*" должен быть указателем, но имеет тип "char".
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Раз вы передаете ссылку, то tmp_word и s являются тупо массивами, т.е. указателями на char. Поэтому вам не надо одновременно их разыменовывать и обращатся по индексу. Или пишите *(tmp_word+tmp) или tmp_word[tmp]

А вообще, можно их и не передавать как ссылки а передвать сами массивы, как указатель на char.
void DeleteWords(char *s, char *tmp_word, int size_word)


Так будет понятнее и проще. А еще лучше, передавайте std::string или std::vector. По ссылке, чтобы избежать копирования. По const ссылке, если не хотите, чтобы их внутри функции меняли.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы