ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Способы передачи двухмерного массива в функцию. С примерами.Массив - это набор однотипных данных, доступ к которым может быть осуществлен по индексу, т.е. по номеру элемента Функция -это поименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Функция, в отличие от процедуры, обязательно возвращает значение.. Двумерный массив - это так называемая матрица (или таблица), у которой есть строки и столбцы(это обычная таблица, со строками и столбцами). 1способ: Для правильного вычисления адреса нахождения элемента массива в памяти необходимо точно знать размер строки, то есть размер двухмерного массива. #include "stdafx.h" void f(int m[5][5]) { int c=0; for (int i=0;i<5;i++){ for (int j=0;j<5;j++){ printf ("adr=%d i=%d j=%d value=%d\n",&m[i][j],i,j,m[i][j]); } } } int _tmain(int argc, _TCHAR* argv[]) { int M[5][5]; int c=0; for (int i=0;i<5;i++){ for (int j=0;j<5;j++){ M[i][j]=++c; } } f(M); scanf(" "); return 0; } 2способ: Двумерный массив представляется в виде одномерного, а местоположения каждого элемента двумерного массива в одномерном определяется суммой номера столбца и произведения номера строки на длину строки. Способ индексации одинаков как в вызывающей функции, так и в вызываемых. #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define MAXVAL 1000 void *Malloc (size_t size); void RandomMatr (double *Matr, int n, int l); void OutMatr (char *name, double *Matr, int n, int m); void main(void) { size_t n = 5, m = 6; double *A;/* Выделение памяти под матрицу */ A = (double *) Malloc(n*m*sizeof(double));/* Заполнение матрицы значениями и распечатка */ RandomMatr(A, n, m); OutMatr("A", A, n, m);/* освобождение памяти */ free(A); } void RandomMatr (double *Matr, int n, int m) { int i, j; for(i = 0; i < n; i++) for(j = 0; j < m; j++) Matr[i*m+j] = random(MAXVAL) + 1; } void OutMatr(char *name, double *Matr, int n, int m) { int i, j; printf("\nМатрица %s\n---------------\n", name); for(i = 0; i < n; i++) { for(j = 0; j < m; j++) printf("%8.1lf ", Matr[i*m+j]); printf("\n"); } } void * Malloc(size_t size) { void *p = malloc(size); if(!p) { printf("Недостаточно памяти!\n"); exit(1); } return p; } Не нашли, что искали? Воспользуйтесь поиском:
|