Объясняю: массив - это ряд одинаковых значений (нет, я не Очевидность :) ). Имя массива в C/C++ возвращает указатель на нулевой элемент массива. Статический двумерный массив - это массив массивов, а имя двумерного массива возвращает указатель на первый элемент, т. е. на массив фиксированного размера (!), и от этого никак не уйдешь: выражение a[1] означает *(a+sizeof(*a)), а раз a - массив массивов, то sizeof должен как-то вычисляться.
Поэтому либо делай динамический массив (массив ссылок, каждую инициализировать через new), либо вычисляй вручную смещения (ну ладно, не совсем вручную) :
void RandomizeArray(int *arr,...
for (int i = 0; i < arr_size_x; i++)
for (int j = 0; j < arr_size_y; j++)
arr[arr_size_y*i+j] = rand() % 100 - 50;
Другие языки программирования и технологии
C++: И снова передача двумерных массив в функцию.. . каким макаром это сделать?
"двумерный массив, но не так void RandomizeArray(int arr[][5]..."
В C++ нет общего типа обычных двумерных массивов. Есть типы int arr[][1], int arr[2], ..
Придется использовать явное приведение типа, и указывать размер, а если хочешь без явного указания размера - используй все же векторы.
В C++ нет общего типа обычных двумерных массивов. Есть типы int arr[][1], int arr[2], ..
Придется использовать явное приведение типа, и указывать размер, а если хочешь без явного указания размера - используй все же векторы.
void Randomize(int **a, int sizeI, int sizeJ)
какое там исключение?
какое там исключение?
#include < stdio.h >
#include < stdlib.h >
#include < time.h >
void randomizeArray (int **arr, int x, int y)
{
for (int i = 0; i < y; i++)
{
for (int j = 0; j < x; j++)
{
arr[ i ][ j ] = 1 + rand() % 100;
printf("M", arr[ i ][ j ]);
}
putchar('\n');
}
}
int main ( void )
{
int **arr;
arr = ( int ** ) malloc (sizeof( int ) * 5);
for (int i = 0; i < 5; i++)
arr[ i ] = ( int * ) malloc (sizeof( int ) * 4);
srand( time( NULL ) );
randomizeArray(arr, 4, 5);
for (int i = 0; i < 5; i++)
free(arr[ i ]);
free( arr );
system("pause > nul");
return 0;
}
#include < stdlib.h >
#include < time.h >
void randomizeArray (int **arr, int x, int y)
{
for (int i = 0; i < y; i++)
{
for (int j = 0; j < x; j++)
{
arr[ i ][ j ] = 1 + rand() % 100;
printf("M", arr[ i ][ j ]);
}
putchar('\n');
}
}
int main ( void )
{
int **arr;
arr = ( int ** ) malloc (sizeof( int ) * 5);
for (int i = 0; i < 5; i++)
arr[ i ] = ( int * ) malloc (sizeof( int ) * 4);
srand( time( NULL ) );
randomizeArray(arr, 4, 5);
for (int i = 0; i < 5; i++)
free(arr[ i ]);
free( arr );
system("pause > nul");
return 0;
}
void RandomizeArray(int arr[][SEC_ARR_Y_SIZE], int arr_size_x, int arr_size_y)
...
...
Массив хранится в переменной, передаешь переменную и все.
В самой функции работаешь с переданной переменной.
В самой функции работаешь с переданной переменной.
Похожие вопросы
- Как можно передать ДВУМЕРНЫЙ массив в функцию в С++, не создавая его, как глобальный. Пример ниже:
- помогите срочно надо Квадратные массивы тема: Двумерные массивы на языке C++
- .помогите пожалуйста двумерный массив на языке c++
- Каким образом в c++ можно передать двумерный массив в фунцкию?
- Привет, помогите с программированием на СИ, передача массива в функцию..
- C++ Как объявить и вывести из функции статический двумерный массив?
- Сформировать двумерный массив C++
- дан двумерный массив С(3,4).Получите новый массив А путём увеличения всех элементов исходного массива на число С.
- Необходимо упорядочить строки двумерного массива, по возрастанию первого эл-та. СИ.
- Что такое Двумерный массив?
при выполнении строчки указанной в вопросе