2014 dxdy logo

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

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




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


26/06/14
1
Не могу понять, что возвращает функция 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 
Заслуженный участник
Аватара пользователя


01/08/06
3136
Уфа
int** ms — не совсем двумерный массив. Это указатель на массив указателей на массивы-строки матрицы. Соответственно, *ms (первый элемент ms) — это указатель на первую строку матрицы.

 Профиль  
                  
 
 Re: Что возвращает функция? Cи
Сообщение29.06.2014, 23:41 


10/05/13
251
Функция run возвращает указатель на первый элемент матрицы, это аналогично &ms[0][0].

 Профиль  
                  
 
 Re: Что возвращает функция? Cи
Сообщение21.07.2014, 20:55 


29/11/10
107
Vaganov в сообщении #880647 писал(а):
Не могу понять, что возвращает функция run?
То есть когда мы разыменовываем указатель на первый элемент двумерного массива мы получаем все элементы этого массива?
Или я чего-то не так понимаю?

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group