Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 06.05.2017
Сообщений: 12

Как передать в функцию char массив?

06.05.2017, 15:22. Показов 6065. Ответов 10

Студворк — интернет-сервис помощи студентам
Стараюсь сделать консольную змейку. Вообще не понимаю ничего с этими char.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "stdafx.h"
#include "stdio.h"
#include "iostream"
using namespace std;
 
void obnovlenie(char array);
void vivod(char array);
int main() {
    char map[61][30];
    obnovlenie(map);
    vivod(map);
    system("pause");
}
 
void obnovlenie(char map[61][30]){
    char overY = '.';
    char overX = ' ';
    int x, y;
    for (x = 0; x < 61; x++) {
        for (y = 0; y < 30; y++) {
            if (x == 0 || x == 60) {
                map[x][y] = overY;
            }
            else if (y == 0 || y == 29) {
                if (x == 0) {
                    map[x][y] = overY;
                }
                else if (x % 2 == 1) {
                    map[x][y] = overX;
                }
                else if (x % 2 == 0) {
                    map[x][y] = overY;
                }
            }
            else if (x != 0 && x != 60 && y != 0 && y != 29) {
                map[x][y] = overX;
            }
        }
    }
}
void vivod(char map[61][30]) {
    int x, y;
    for (y = 0; y < 30; y++) {
        for (x = 0; x < 61; x++) {
            cout << map[x][y];
        }
        cout << "\n";
    }
}
Ошибки:
(13): error C2664: "void obnovlenie(char)": невозможно преобразовать аргумент 1 из "char [61][30]" в "char"
(13): note: Не существует контекста, в котором такое преобразование возможно
(14): error C2664: "void vivod(char)": невозможно преобразовать аргумент 1 из "char [61][30]" в "char"
(14): note: Не существует контекста, в котором такое преобразование возможно
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2017, 15:22
Ответы с готовыми решениями:

Передать массив char, в функцию
Добрый день, не понемаю как можно в собственную функцию передать массив char. Собственно есть 2 примера, можете подсказать правильные или...

Как передать Правильно в функцию тип char* ?
ошибка происходит на 16 строчке кода в файле console application c++.cpp. Как ее исправить? В программе есть 4 файла: 1...

Как передать символ в функцию (const char *string)
Мне нужно передать в функцию atof символы F, F, S, S, но когда я пытаюсь так сделать ошибка invalid conversion from 'char' to 'const...

10
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
06.05.2017, 15:24
Цитата Сообщение от GooseBD Посмотреть сообщение
void obnovlenie(char array);
Цитата Сообщение от GooseBD Посмотреть сообщение
void obnovlenie(char map[61][30]){
найдите 10ть отличий.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
06.05.2017, 15:26
Цитата Сообщение от GooseBD Посмотреть сообщение
C++
1
2
void obnovlenie(char array); 
void vivod(char array);
C++
1
2
void obnovlenie(char array[][30]); 
void vivod(char array[][30]);
0
0 / 0 / 0
Регистрация: 06.05.2017
Сообщений: 12
06.05.2017, 15:28  [ТС]
Цитата Сообщение от hoggy Посмотреть сообщение
найдите 10ть отличий.
А что, если функция для разных массивов?

Добавлено через 50 секунд
Цитата Сообщение от nd2 Посмотреть сообщение
C++
1
2
void obnovlenie(char array[][30]); 
void vivod(char array[][30]);
А что, если функция для разных массивов?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
06.05.2017, 15:29
Цитата Сообщение от GooseBD Посмотреть сообщение
для разных массивов
В чём разных?
0
0 / 0 / 0
Регистрация: 06.05.2017
Сообщений: 12
06.05.2017, 15:30  [ТС]
Количество элементов.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
06.05.2017, 15:31
Тогда делай через указатель на указатель, его и размерности будешь передавать в функции.
0
0 / 0 / 0
Регистрация: 06.05.2017
Сообщений: 12
06.05.2017, 15:32  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Тогда делай через указатель на указатель, его и размерности будешь передавать в функции.
Можно, пожалуйста, пример?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
06.05.2017, 15:33
Цитата Сообщение от GooseBD Посмотреть сообщение
А что, если функция для разных массивов?
значит нужно открыть учебник для самых маленьких,
и почитать главы:
1.
функции.
что это такое,
как их правильно объявлять и определять.

2.
массивы, что это такое такое,
и чем массивы отличаются от не массивов.
0
0 / 0 / 0
Регистрация: 06.05.2017
Сообщений: 12
06.05.2017, 15:35  [ТС]
Как раз-таки эти главы я уже прочитал. Видимо, эта информация не для самых маленьких.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
06.05.2017, 15:56
Цитата Сообщение от nd2 Посмотреть сообщение
Тогда делай через указатель на указатель, его и размерности будешь передавать в функции.
Или через шаблон:
C++
1
2
3
4
5
6
7
8
9
10
template <class T, int N, int M>
void foo(T (&arr)[N][M])
{
    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < M; ++j)
            cout << arr[i][j] << ' ';
        cout << endl;
    }
}
C++
1
2
3
4
5
6
7
8
    int arr[4][8];
    for (int i = 0; i < 4; ++i)
    {
        for (int j = 0; j < 8; ++j)
            arr[i][j] = j;
        
    }
    foo(arr);
Добавлено через 6 минут
Цитата Сообщение от GooseBD Посмотреть сообщение
Можно, пожалуйста, пример?
C++
1
2
3
4
5
6
7
8
9
void foo(int** arr, int N, int M)
{
    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < M; ++j)
            cout << arr[i][j] << ' ';
        cout << endl;
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
    int N = 4;
    int M = 8;
    int** arr = new int*[N];
    for (int i = 0; i < N; ++i)
        arr[i] = new int[M];
    
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < M; ++j)
            arr[i][j] = j;
        
    foo(arr, N, M);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.05.2017, 15:56
Помогаю со студенческими работами здесь

Не могу разобраться как передать корректно передать массив из функции в функцию
//--------------------------------------------------------------------------- #pragma hdrstop ...

Как в стандартную функцию WinAPI передать тип данных std::string вместо char*?
Помогите пожалуйста. Мне надо в GetDlgItemText передать std::string. Как это можно сделать? Вижуалка говорит, что нельзя преобразовать...

Как правильно передать в процедуру массив строк char*?
Нужно чтобы процедура возвращала измененный массив. Пытаюсь так: Void sss(char**arr) { *arr=&quot;i&quot;; } ...

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив?
Допустим есть структура struct Base { int a; int b; int c; }; В основном методе main() объявим массив...

Как передать массив в функцию?
добрый день сначал написал программу(код представлен ниже), а потом оказалось что все действия надо было сделать функцией, как сделать...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru