Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Func4(mike.str);// передается адрес строки str





func(&mike.str[2]);// передается адрес символа в str[2]

Когда в качестве аргумента функции используется структура, для передачи целой структуры выбирается обычный способ вызова по значению [2], т. е. любые изменения в содержимом параметра внутри функции не отразятся на той структуре, которая передана в качестве аргумента.

При использовании структуры в качестве параметра надо помнить, что тип аргумента должен соответствовать типу параметра. В качестве примера рассмотрим следующий программный код [2]:


 

#include <stdio.h> #include <conio.h> // Определение глобального типа структуры struct struct_type { int a, b; char ch; }; // Прототип функции void fun(struct struct_type parm); int main (void) { struct struct_type arg; arg.a = 1000; fun(arg); printf("\n Press any key: "); getch(); return 0; } // Определение функции void fun(struct struct_type parm) { printf("\n %d\n", parm.a); }  

Назначение приведенной программы состоит в печати заданных полей структуры, которая объявлена как глобальная, чтобы структурный тип был виден во всей программе.

Когда используется указатель на структуру, вместо оператора точки применяют оператор «стрелка». Видоизменим рассмотренную программу, введя в нее указатель на структуру:

#include <stdio.h> #include <conio.h> // Определение глобального типа структуры struct struct_type { int a, b; char ch; }; // Прототип функции void fun(struct struct_type *parm); int main (void) { struct struct_type arg,*PTR; PTR = &arg; PTR->a = 999; fun(PTR); printf("\n Press any key: "); getch(); return 0; } // Определение функции void fun(struct struct_type *parm) { printf("\n %d\n", parm->a); }

Современные компиляторы языка С позволяют передавать структуры в качестве аргументов функций. Изменим рассмотренную программу так, чтобы она давала возможность печатать сумму двух целых чисел и заданный символ:

#include <stdio.h> #include <conio.h> // Определение глобального типа структуры struct struct_type {int a, b; char ch; }; // Прототип функции void fun(struct struct_type STRUCT3); int main (void) { struct struct_type struct2 = {2, 3, 'Z' }; fun(struct2); printf("\n Press any key: "); getch(); return 0; } // Определение функции void fun(struct struct_type STRUCT3) { printf("\n %c: %d + %d = %d\n", \ STRUCT3.ch, STRUCT3.a, STRUCT3.b, STRUCT3.a + STRUCT3.b); }  

В современных версиях языка С, в том числе в ANSI C, структуры не только можно передавать функции в качестве аргументов, но и возвращать их из функции [3]. При использовании функций для возврата структур становится возможным отправлять информацию из вызываемой функции в вызывающую. Указатели на структуры допускают также двусторонний обмен данными.


 







Дата добавления: 2015-09-06; просмотров: 371. Нарушение авторских прав; Мы поможем в написании вашей работы!




Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Значення творчості Г.Сковороди для розвитку української культури Важливий внесок в історію всієї духовної культури українського народу та її барокової літературно-філософської традиції зробив, зокрема, Григорій Савич Сковорода (1722—1794 pp...

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Принципы и методы управления в таможенных органах Под принципами управления понимаются идеи, правила, основные положения и нормы поведения, которыми руководствуются общие, частные и организационно-технологические принципы...

ПРОФЕССИОНАЛЬНОЕ САМОВОСПИТАНИЕ И САМООБРАЗОВАНИЕ ПЕДАГОГА Воспитывать сегодня подрастающее поколение на со­временном уровне требований общества нельзя без по­стоянного обновления и обогащения своего профессио­нального педагогического потенциала...

Эффективность управления. Общие понятия о сущности и критериях эффективности. Эффективность управления – это экономическая категория, отражающая вклад управленческой деятельности в конечный результат работы организации...

Studopedia.info - Студопедия - 2014-2025 год . (0.011 сек.) русская версия | украинская версия