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

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

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. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Правила наложения мягкой бинтовой повязки 1. Во время наложения повязки больному (раненому) следует придать удобное положение: он должен удобно сидеть или лежать...

ТЕХНИКА ПОСЕВА, МЕТОДЫ ВЫДЕЛЕНИЯ ЧИСТЫХ КУЛЬТУР И КУЛЬТУРАЛЬНЫЕ СВОЙСТВА МИКРООРГАНИЗМОВ. ОПРЕДЕЛЕНИЕ КОЛИЧЕСТВА БАКТЕРИЙ Цель занятия. Освоить технику посева микроорганизмов на плотные и жидкие питательные среды и методы выделения чис­тых бактериальных культур. Ознакомить студентов с основными культуральными характеристиками микроорганизмов и методами определения...

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

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

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

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