Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/105: Рейтинг темы: голосов - 105, средняя оценка - 4.90
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Как правильно передать в функцию указатель на двумерный массив?

26.02.2012, 20:51. Показов 19871. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сабж
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
#include <windows.h>
#include <stdio.h>
using namespace std;
 
//ОТ безысходности сделал матрицу глобальной
int A [4][4]= {2, 3,4, 6, 7, 8, 9,0, 2, 3, 4, 5, 6, 7, 8, 9};
 
int max_matr (int** matrix) {
 printf ("matrix= %x\n", matrix);
 
 //Тут генерит исключение
 printf ("matrix[0][0]= %d\n", matrix[0][0]);
}
 
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
int main () {
 
 
 //Объявляем и заполняем матрицу
  for (int i= 0; i< 4; i++) {
   for (int j= 0; j< 4; j++) {
    printf ("%*d  ",4, A[i][j]);
   } 
   printf ("\n");
  }    
 
 printf ("A[0][0]= %d\n", A[0][0]);
 printf ("A= %x\n", A);
 max_matr((int**)&A[0][0]);
 
 getchar (); 
 return 0;
}
Адрес передаётся один и тот же, ЧЯДНТ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2012, 20:51
Ответы с готовыми решениями:

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

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

C# Подскажите как правильно передать указатель на структуру в функцию
Здравствуйте, возникли проблемы с переходом из С в С#, к сожалению синтаксис C# знаю плохо и сразу возник вопрос: Есть функция из...

8
 Аватар для Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140
26.02.2012, 21:07
Не мучайся и используй указатели.
А там всё просто:
C++
1
2
3
4
5
6
void fun(int** a){...}
 
void main(){
   int** a;
   fun(a);
}
0
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
26.02.2012, 21:09
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
void fun(int** a){...}
void main(){
int** a;
fun(a);
}
Это если динамический массив, а ТС хочет
Цитата Сообщение от kravam Посмотреть сообщение
A [4][4]
Тогда:
C++
1
2
3
void func(int A[][4]){}
//или
void func (int (*A)[4]) {}
1
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
26.02.2012, 21:17
Можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Set(int arr[], int f_ind, int s_ind){
 
        for(int i = 0; i < f_ind; i++ ){
 
                for(int j = 0; j < s_ind; j++ ){
 
                arr[i * s_ind + j] = rand() % 50;   // ЗАПОЛНЯЕМ СЛУЧАЙНЫМИ ЧИСЛАМИ 
 
                printf(" %d ",arr[i * s_ind + j] );   //   ВЫВОД
                }}}
 
int main()
{
        srand (time(NULL));
 
        int farr[M][N];
 
        Set(*farr, M, N); //
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
27.02.2012, 23:39
kravam,
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
#include <iostream>
 
template<typename T, size_t M, size_t N>
void print_matrix(T (&matrix)[M][N])
{
    for (size_t i = 0; i < M; ++i)
    {
        for (size_t j = 0; j < N; ++j)
            std::cout << matrix[i][j] << "  ";
        
        std::cout << std::endl;
    }
}
 
int main()
{
    int a[2][2] =
    {
        {1, 2},
        {3, 4}
    };
    
    double b[3][4] = 
    {
        {0.1, 0.2, 0.3, 0.4},
        {1.5, 1.6, 1.7, 1.8},
        {2.1, 2.2, 2.3, 2.4}
    };
    
    print_matrix(a);
    print_matrix(b);
    
    return 0;
}
2
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
27.02.2012, 23:52  [ТС]
Сложности такие сложности... Помню раньше на g++ 3.4.2 писал
C++
1
2
int**a;
a[2][3];
И не надо было думать о размерностях...
0
0 / 0 / 0
Регистрация: 09.05.2022
Сообщений: 2
09.05.2022, 09:54
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
 
using namespace std;
void inputmass(int ** arr){
    int n = 3,m = 4;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            arr[i][j] = rand() % 100;
            cout<<arr[i][j]<<"  ";
        }
        cout<<endl;
    }
}
int main()
{
    int n = 4, m = 5;
    int **mass;
    inputmass(mass);
    return 0;
}
Добавлено через 2 минуты
можете подсказать, я пытался сделать ввод двумерного массива через функцию , но в одном компиляторе получил ошибку Process exited due to resource limitations, в другом signal: segmentation fault (core dumped). Это в онлайн компиляторах всё. Может ли это быть из-за компилятора?
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
09.05.2022, 14:20
Цитата Сообщение от Denis3142 Посмотреть сообщение
Может ли это быть из-за компилятора?
Нет.

Цитата Сообщение от Denis3142 Посмотреть сообщение
в одном компиляторе получил ошибку Process exited due to resource limitations, в другом signal: segmentation fault (core dumped).
А память для массива Пушкин будет выделять?
0
0 / 0 / 0
Регистрация: 09.05.2022
Сообщений: 2
11.05.2022, 08:05
Аааа, всё, спасибо, разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2022, 08:05
Помогаю со студенческими работами здесь

Как передать в подпрограмму указатель на двумерный массив?
как передать в подпрограмму указатель на двумерный массив???

Как правильно передать массив через указатель?
#pragma once #include &lt;vector&gt; class TOMathModel { public: TOMathModel(void); ~TOMathModel(void);

Указатель на массив констант. Как передать в функцию?
С наступающим! Нужно передать указатель на stule_a(b) в функцию. А из функций уже выбирать саму строку &quot;stule_a&quot; Как это...

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

Как передать двумерный массив в функцию?
void func(float *mas, int x, int y) { .. for (i=0; i&lt;10; i++) printf (&quot;%d&quot;,mas); } int main() { int x=10,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru