Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2015, 14:59   #1
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию Как передать результат одной функции в качестве аргумента другой

Здравствуйте!

Есть функция печати элементов структуры. Структуру инициализируем статически до вызова функции.

Код:
struct 	tip {				/*Определяем структуру, где элементы - типы данных*/
	char 				ch;			
	unsigned char 		uch;		
	signed char 		sch;
	short int 			shi;
	short unsigned int 	usi;
	int 				i;
	unsigned int 		ui;
	long int 			li;
	long unsigned int 	uli;
	float 				fl;
};	

tip b={		
	(char)0xFF, 
	0xFF, 
	(char)0xFF, 
	(short int)0xFFFF, 
	0xFFFF,
	0xFFFFFF,
	0xFFFFFF,
	0xFFFFFFFF,
	0xFFFFFFFF,
	0xFFFFFF
					};
В другой функции я обнуляю элементы структуры таким образом

Код:
memset(&a,0,sizeof(struct tip));

Подскажите, пожалуйста, как вернуть обнуленную структуру обратно в функцию печати?
В итоге мне нужно - напечатать структуру, обнулить ее, напечатать обнуленную

Обнулил, а дальше не знаю как
Ka2R вне форума Ответить с цитированием
Старый 11.03.2015, 15:47   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Передавайте в функцию-обнулятор экземпляр структуры по указателю/ссылке и обнуляйте.
p51x вне форума Ответить с цитированием
Старый 11.03.2015, 16:44   #3
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Передавайте в функцию-обнулятор экземпляр структуры по указателю/ссылке и обнуляйте.

Спасибо. Такая запись корректна?

Код:
int set_null(struct tip *a)
{

	memset(&(*a),0,sizeof(struct tip));
	printf("Обнуление элементов: %i %-15.2e\nАдрес а: %p\n", a->i, a->fl, (void *)&a);

	return 0;
}
Ka2R вне форума Ответить с цитированием
Старый 11.03.2015, 17:55   #4
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Код:
struct m_struct { int a; int b; } my_struct = {1, 2};

void print_struct(m_struct* p)
{
    static bool first_call = true;
    printf("%d : %d\n", p->a, p->b);    
    if(first_call)
    {
        memset(p, 0, sizeof(my_struct));
        first_call = false;
        print_struct(p);            
    }
}

int main()
{    
    print_struct(&my_struct);
    return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача функции в качестве аргумента maks12 Помощь студентам 5 10.05.2012 08:13
Как в Си использовать двумерный массив в качестве аргумента функции? Hornet_nsk Помощь студентам 7 05.02.2012 09:46
Передача функции другой функции как аргумента C # stopanko C# (си шарп) 2 20.11.2011 13:13
Имя функции в качестве аргумента Artem_Kokos Помощь студентам 1 25.04.2011 00:20
Как массив передать в качестве аргумента функции Mixim C# (си шарп) 7 10.03.2011 09:53