Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 23
1

Передача массива указателей в функцию

15.09.2020, 15:16. Показов 4259. Ответов 3

Author24 — интернет-сервис помощи студентам
Всем привет. По неопытности не могу разобраться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
const int COUNT_S = 4;
const char* SEASONS[] =
{ "Spring", "Summer", "Fail", "Winter" };
double value[COUNT_S];
void fill(const char* SEASONS, double value[], const int count);
//void show(const char *SEASONS, double value[], int count);
int main() {
    fill(&SEASONS, value, COUNT_S);
    //  show(value);
    std::cin.get();
    return 0;
}
void fill(const char* SEASONS[], double value[], const int count) {
    for (int i = 0; i < count; i++)
    {
        std::cout << "Enter " << *SEASONS[i] << " expenses: ";
        std::cin >> value[i];
    }
}
Ошибка:
error: cannot convert 'const char* (*)[4]' to 'const char*' for argument '1' to 'void fill(const char*, double*, int)'
fill(&SEASONS, value, COUNT_S);
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2020, 15:16
Ответы с готовыми решениями:

Передача двумерного массива указателей в функцию
Всем здравствуйте! Мне необходимо создать что-то вроде справочной системы по операторам языка С++. ...

Передача массива указателей в функцию для выделения памяти
Есть функция, в которую передаются массивы указателей, для выделения памяти. void...

Передача указателей в функцию
Необходимо передать *x и *y в функцию, высчитать в каждой функции *f, *g, *s и вывести их в главной...

Передача двумерных массивов и указателей в функцию
Warning: если про это уже было, можете удалить это сообщение Передача двумерного массива функции ...

3
25 / 19 / 8
Регистрация: 05.04.2019
Сообщений: 338
15.09.2020, 15:28 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
const int COUNT_S = 4;
const char* SEASONS[] =
{ "Spring", "Summer", "Fail", "Winter" };
double value[COUNT_S];
void fill(const char* SEASONS, double value[], const int count);
//void show(const char *SEASONS, double value[], int count);
int main() {
    fill(*SEASONS, value, COUNT_S);
    //  show(value);
    std::cin.get();
    return 0;
}
void fill(const char* SEASONS, double value[], const int count) 
{
    for (int i = 0; i < count; i++)
    {
        std::cout << "Enter " << *SEASONS << " expenses: ";
        std::cin >> value[i];
    }
}
0
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 23
15.09.2020, 15:43  [ТС] 3
SkYMaaN, нет, ваш вариант вообще передает указатель на литерал seasons. Нужно, чтобы массив проходил итерации и соответственно изменялся сезон.
0
2831 / 2336 / 707
Регистрация: 29.06.2020
Сообщений: 8,638
15.09.2020, 16:24 4
Лучший ответ Сообщение было отмечено RomulSi как решение

Решение

C++
1
fill(&SEASONS, value, COUNT_S);
при вызове никакого адресса. ваш массив и так адрес, компилятор сам разберется
C++
1
fill(SEASONS, value, COUNT_S);
Добавлено через 3 минуты
Непонимание указателей, массивов, это конечно страшно,
Вам нужно над этим поработать.
Так же не видно результат работы программы.

Добавлено через 1 минуту
std::cout << "Enter " << *SEASONS[i] << " expenses: "; // также без разыменования, доступ оп индексу это делает сам
// у меня выводился один символ с вашего массива

C++
1
std::cout << "Enter " << SEASONS[i] << " expenses: ";
Добавлено через 16 минут
при функции объявлении и определения не сходятся типы
в итоге исправленныйкод будет приблизительно след
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
const int COUNT_S = 4;
const char* SEASONS[] =
{ "Spring", "Summer", "Fail", "Winter" };
double value[COUNT_S];
void fill(const char* SEASONS[], double value[], const int count);
//void show(const char *SEASONS, double value[], int count);
int main() {
    fill(SEASONS, value, COUNT_S);
    //  show(value);
    std::cin.get();
    return 0;
}
void fill(const char* SEASONS[], double value[], const int count) {
    for (int i = 0; i < count; i++)
    {
        std::cout << "Enter " << SEASONS[i] << " expenses: ";
        std::cin >> value[i];
    }
}
1
15.09.2020, 16:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2020, 16:24
Помогаю со студенческими работами здесь

Передача указателей на файлы в функцию?О_о
Добрый день! Возникла проблема при написании программы на структуры. Допустим у нас есть массив...

Передача двумерного массива указателей на char в качестве параметра функции
Есть массив char *result2; Нужно передать его в функцию void defDouble(???) в качестве одного из...

Инициализация массива указателей на функцию
При попытке инициализировать массив указателей на функцию возникает ошибка, не могу разобраться в...

Передать в функцию размер массива указателей
Всем привет. Есть массив указателей допустим char *array = { &quot;строка 1&quot;, &quot;строка 2&quot;... &quot;строка n&quot; }...

Передача указателей в функцию
Доброго времени! У меня возник вопрос передачи указателей в функцию из с++. например: uint16...

Передача указателей в функцию
Программа находит наибольшее число одинаковых рядом идущих символов, и выводит на экран это число и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru