2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Что возвращает функция? Cи
Сообщение27.06.2014, 09:24 
Не могу понять, что возвращает функция run?

код: [ скачать ] [ спрятать ]
Используется синтаксис C
#include<stdio.h>
#include<ctime>
#include<stdlib.h>
int i,j,n,m;
int* run(int** ms,int n,int m);
int main()
{
    srand(time(NULL));
    //Определение матрицы
    printf("Введите количество строк: ");
    scanf("%d",&n);
    printf("Введите количество столбцов: ");
    scanf("%d",&m);
    //Выделение памяти под матрицу
    int** ms=(int**)malloc(n*sizeof(int*));
    for(i=0;i<n;i++)
        ms[i]=(int*)malloc(m*sizeof(int));
    //Работа с матрицей
    run(ms,n,m);
    //Освобождение памяти
    for(i=0;i<n;i++)
        free(ms[i]);
    free(ms);
    return 0;
}
int* run(int** ms,int n,int m)
{
    //Инициализация и вывод матрицы
    for(i=0;i<n;i++){
        printf("\n");
        for(j=0;j<m;j++){
            ms[i][j]=rand()%99+1;
            printf("%2d ",ms[i][j]);
        }
    }
    return *ms;
}
 


-- 27.06.2014, 11:47 --

То есть когда мы разыменовываем указатель на первый элемент двумерного массива мы получаем все элементы этого массива?
Или я чего-то не так понимаю?

 
 
 
 Re: Что возвращает функция? Cи
Сообщение27.06.2014, 11:47 
Аватара пользователя
int** ms — не совсем двумерный массив. Это указатель на массив указателей на массивы-строки матрицы. Соответственно, *ms (первый элемент ms) — это указатель на первую строку матрицы.

 
 
 
 Re: Что возвращает функция? Cи
Сообщение29.06.2014, 23:41 
Функция run возвращает указатель на первый элемент матрицы, это аналогично &ms[0][0].

 
 
 
 Re: Что возвращает функция? Cи
Сообщение21.07.2014, 20:55 
Vaganov в сообщении #880647 писал(а):
Не могу понять, что возвращает функция run?
То есть когда мы разыменовываем указатель на первый элемент двумерного массива мы получаем все элементы этого массива?
Или я чего-то не так понимаю?

Возвращает "первую строку матрицы" понятным языком. Если переписать функцию как возвращающую void (ничего то есть), то работа и логика программы нарушены не будут.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group