Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Void main(). char *str = "Это текст";



{

int a = 10, b = 20;

char *str = "Это текст";

printf("a = %d, с = %s, b = %d", a, str, b);

}

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

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

1. При разработке тела функции необходимо использовать макросы для работы со списками аргументов функций. Для их использования в программу необходимо включить заголовочный файл <stdarg.h>:

#include <stdarg.h>

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

double Summa (int N, …)

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

3. В теле функции необходимо определить переменную для работы со списком параметров (тип данных этой переменной va_list определен в <stdarg.h>), значение которой инициализируют с помощью макроса va_start (он также принадлежит <stdarg.h>). Перед завершением работы функции необходимо (обязательно!) с помощью макроса va_end очистить стек программы от необязательных параметров функции:

{

va_list L; // Объявляем переменную для списка параметров

va_start (L, N); // Инициализируем переменную списка параметров

……….

va_end (L); // Очищаем стек

return ………;

}

Макрос va_start имеет два параметра. Первый – это переменная списка параметров. Второй – имя последнего обязательного параметра функции (параметра, который находится в списке параметров непосредственно перед необязательными параметрами).

4. Получение очередного параметра из списка необязательных параметров осуществляется с помощью макроса va_arg (), например, так:

double R = 0;

for (int I = 0; I < N; ++ I)

R += va_arg (L, double);

Параметрами макроса va_arg являются переменная списка параметров и тип данных очередного параметра из списка.

Приведенные выше “заготовки” приводят нас к функции, выполняющей суммирование N вещественных значений:

#include <iostream>

#include <stdio.h>

#include <stdarg.h>





Дата публикования: 2014-11-28; Прочитано: 194 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...