28 / 28 / 3
Регистрация: 09.09.2012
Сообщений: 131

Указатели на передаваемые двумерные массивы в функцию

06.11.2013, 10:16. Показов 714. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток)
Вчера озадачился новым. В недавнем времени перешел на vs 2013 и тут при написании ф-ии решил передать в нее массив тк кк ф-ия копирует же как данные, а после завершения удаляет. По крайне мере такое было с классом, когда я его передавал в ф-ию. А тут мне необходимо было передать в ф-ую двумерный массив, после недолгого гугления понял что двумерные передаются с указанием второй размерности arr[][n] и тут я не поставил указатель на него. При выходе из ф-ию я увидел что измененные значения в массиве сохранились, вопрос почему? или почему тогда нужно передавать указатель на класс, а на массив не обходимо?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2013, 10:16
Ответы с готовыми решениями:

Указатели: функции, двумерные массивы
мне нужно вернуть из функции getArray двумерный построенный массив в функцию main, для передачи следующей функции (ещё не написана). ...

Двумерные массивы объявить через указатели
поменяйте код так, чтобы массивы объявлялись как указатели, сам мучался долго, но не смог #include <stdio.h> #define N 3...

Указатели и двумерные массивы! Очень интересно! Идентичность!
Короче, есть некоторый отрывок кода в котором роль играют указатели... Нужно толкование почему следующие выражения будут идентичны. Я в...

3
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
06.11.2013, 11:04
Код покажи
0
28 / 28 / 3
Регистрация: 09.09.2012
Сообщений: 131
06.11.2013, 18:33  [ТС]
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
int minx, maxx, miny, maxy;
int stx = 17, sty = 2;
int finx = 7, finy = 13;
 
 
int main()
{
    void show_arr(int [][n]);
    void mask_arr(int [][n], int [][n]);
    setlocale(LC_ALL, "Russian");
    ifstream in("matrix_20x20.txt");
    int arr[n][n];
    int tmp_arr[n][n];
    string s;
 
    for (int i = 0; i < 20; i++)
    {
        for (int j = 0; j < 20; j++)
        {
            in >> arr[i][j];
        }
    }
    // Старт 2, 17    Финиш  13,  7
    show_arr(arr);
    system("cls");
    mask_arr(arr, tmp_arr);
    arr[17][2] = 13;
    for (int i = stx - 1; i < stx + 2; i++)
    {
        for (int j = sty - 1; j < sty + 2; j++)
        {
            cout << tmp_arr[i][j] << " ";
        }
        cout << endl;
    }
    getch();
    return 0;
 
}
 
 
 
void mask_arr(int arr[][n], int tmp_arr[][n])
{
    
    int val = 1;
    tmp_arr[stx][sty] = 0;
 
    if ((arr[stx + 1][sty] != 90) || (arr[stx + 1][sty] != 99))
    {
        maxx += 1;
        tmp_arr[stx + 1][sty] = val;
    }
    if ((arr[stx - 1][sty] != 90) || (arr[stx - 1][sty] != 99))
    {
        minx += 1;
        tmp_arr[stx - 1][sty] = val;
    }
    if ((arr[stx][sty + 1] != 90) || (arr[stx][sty + 1] != 99))
    {
        maxx += 1;
        tmp_arr[stx][sty + 1] = val;
    }
    if ((arr[stx][sty - 1] != 90) || (arr[stx][sty - 1] != 99))
    {
        miny += 1;
        tmp_arr[stx][sty - 1] = val;
    }
}
Тут всё гут, но вопрос состоит именно в том: почему ф-ия не копирует передаваммые данные а ссылается напрямую на них или это работает только с абстрактными типами данных такие как класс, структура где есть прямая необходимость делать указатель на них? тк кк в противном случае в варианте с классом, ф-ия копирует его в ф-ию и работает там с копией, а не тк кк в вышеуказанном примере с массивом.
З.Ы. мне всегда казалось что ф-ия копирует передаваемые данные в ф-ию и работает с копией, имхо.

Добавлено через 5 часов 36 минут
up+

Добавлено через 1 час 22 минуты
up++
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.11.2013, 18:55
Если правильно понял вопрос: имя массив, при передаче в функцию, прербразуется в указатель на начало этотго массива. В остальных случаях данные передаются как обычно (или по значению, или по ссылке, или по указателю).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.11.2013, 18:55
Помогаю со студенческими работами здесь

Динамические двумерные массивы через указатели. Как это происходит?
Вот типичная идентификация двумерного массива (NxM): int** mass = new int*; for(i=0; i&lt;N; i++) mass = new int; Помогите...

Написать функцию, которая будет складывать двумерные массивы
1. Нужно написать функцию, которая будет складывать двумерные массивы (можно поставить 3х3). Самую обычную. Обозначить функцию суммы....

Указатели и массивы. Передача массива в функцию по указателю
Как передать массив в функцию,которая должна заполнить этот массив ? Вот,что я составил, но компилятор ругается: #include...

Двумерные массивы. Написать функцию, которая меняет значения диагональных элементов
уважаемые программисты прошу помочь с программой на двумерный массив т.к. я не в силах это сделать!!! нужно создать функцию к этой...

программа перемножает двумерные массивы. Как объявить функцию mul (умножения) в main ?
////////////////////////////class.h //файл заголовка #include &lt; iostream&gt; using namespace std; class massiv { int n; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru