@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".
  • Вопрос задан
  • 100 просмотров
Решения вопроса 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 ссылке, если не хотите, чтобы их внутри функции меняли.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы