Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как вернуть сразу 2 значения из функции? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как начать программировать на С++ http://www.cyberforum.ru/cpp-beginners/thread22356.html
Пожалуйста мастера программирования расскажыте подробно шаг за шагом , как начать программировать на С++. Тоесть где скачать программу,как её установить, руссифицировать,какая книга лутче для...
C++ В двумерном массиве A[N][M] поменять местами строки,в которых сумма элементов максимальна и минимальна. Помогите пожалуйста.. http://www.cyberforum.ru/cpp-beginners/thread22333.html
Вывести все слова входного потока, которые оканчиваются заданным символом C++
прога в турбо си.. очень надо! пожалуйста помогите
C++ Броуновское движение
Помогите пожалуйста разобраться с программой. Нужны 100 точек бегающих по экрану. У меня бегает всего лишь одна точка. Вот код: #include<graphics.h> #include<stdio.h> #include<stdlib.h>...
C++ В двумерном массиве A[N][M] упорядочить строки так, что бы возрастали элементы заданного столбца. Массив статический http://www.cyberforum.ru/cpp-beginners/thread22310.html
Очень надо! Пожалуйста помогите!!!
C++ Вывести все слова входного потока, заканчивающиеся заданной последовательностью символов Пожалуйста помогите! подробнее

Показать сообщение отдельно
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
04.02.2009, 23:47
Саму структуру, которую потом функция вернуть должна, в функции задавать надо? Или можно вне функции?
структуру нужно объявлять вне всех функций потому что у функции должен быть возвращаемый тип структура (чтобы он был виден когда функция определяется как возвращающая такой-то тип), структура может хранить значения различных типов, в этом её плюс

Код
 
#include <stdio.h>

struct x { int a, b; };

/* возвращает несколько переменных из функции в структуре */
main()
{
    struct x f(int, int);
    
    printf("%d %d\n",
        f(5, 1).a, f(1, 8).b);
    return 0;
}

struct x f(int a, int b)
{
    struct x tmp = { a*2, b*2 };
    return tmp;
}
операции идут () [] -> . слева направо, то есть сначала вычисляются скобки а потом точка, возвращение структуры введено в стандарте ANSI(89); возвращать можно структуру, а можно указатель на структуру, это различается в том плане, что когда возвращаешь структуру она вся копируется (то есть все её элементы), а когда указатель то копируется просто адрес. Так как возвращать адрес автоматической структуры нельзя, потому что она разрушается после работы функции, можно создать статическую структуру внутри функции.

Код
 
#include <stdio.h>

struct x { int a, b; };

main()
{
    struct x *f(int, int);
    
    printf("%d %d\n",
        f(5, 1)->a, f(1, 8)->b);
    return 0;
}

struct x *f(int a, int b)
{
    static struct x tmp;
    
    tmp.a = a*2;
    tmp.b = b*2;
    return &tmp;
}
статическую структуру нельзя инициализировать неконстантами (переменными то есть), и ещё она инициализируется только один раз, в момент создания, то есть чтобы придавать ей новые значения каждый раз, нужно присваивать их вне инициализации (инициализация - присваивание значения прямо в объявлении)
короче если у тебя структуры содержат немало данных, нужно юзать указатели, если мало, то можно прямо передавать (передавать можно в обе стороны)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.