Читаем C++ для начинающих полностью

Это гарантирует, что при любом вызове printf() ей будет передан первый аргумент типа const char*. Содержание такой строки, называемой форматной, определяет, необходимы ли дополнительные аргументы при вызове. При наличии в строке формата метасимволов, начинающихся с символа %, функция ждет присутствия этих аргументов. Например, вызов

printf( "hello, world\n" );

имеет один строковый аргумент. Но

printf( "hello, %s\n", userName );

имеет два аргумента. Символ % говорит о наличии второго аргумента, а буква s, следующая за ним, определяет его тип – в данном случае символьную строку.

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

Отметим, что следующие объявления неэквивалентны:

void f();

void f( ... );

В первом случае f() объявлена как функция без параметров, во втором – как имеющая ноль или более параметров. Вызовы

f( someValue );

f( cnt, a, b, с );

корректны только для второго объявления. Вызов

f();

применим к любой из двух функций.

Упражнение 7.4

Какие из следующих объявлений содержат ошибки? Объясните.

(a) void print( int arr[][], int size );

(b) int ff( int a, int b = 0, int с = 0 );

(c) void operate( int *matrix[] );

(d) char *screenInit( int height = 24, int width,

char background );

(e) void putValues( int (ia)[] );

Упражнение 7.5

Повторные объявления всех приведенных ниже функций содержат ошибки. Найдите их.

(a) char *screenInit( int height, int width,

char background = ' ' );

char *screenInit( int height = 24, int width,

char background );

(b) void print( int (*arr)[6], int size );

void print( int (*arr)[5], int size );

(c) void manip( int *pi, int first, int end = 0 );

void manip( int *pi, int first = 0, int end = 0 );

Упражнение 7.6

Даны объявления функций.

void print( int arr[][5], int size );

void operate(int *matrix[7]);

char *screenInit( int height = 24, int width = 80,

char background = ' ' );

Вызовы этих функций содержат ошибки. Найдите их и объясните.

(a) screenInit();

(b) int *matrix[5];

operate( matrix );

(c) int arr[5][5];

print( arr, 5 );

Упражнение 7.7

Перепишите функцию putValues( vectorint ), приведенную в подразделе 7.3.4, так, чтобы она работала с контейнером liststring. Печатайте по одному значению на строке. Вот пример вывода для списка из двух строк:

( 2 )

"first string"

"second string"

Напишите функцию main(), вызывающую новый вариант putValues() со следующим списком строк:

"put function declarations in header files"

"use abstract container types instead of built-in arrays"

"declare class parameters as references"

"use reference to const types for invariant parameters"

"use less than eight parameters"

Упражнение 7.8

В каком случае вы применили бы параметр-указатель? А в каком – параметр-ссылку? Опишите достоинства и недостатки каждого способа.

<p>7.4. Возврат значения</p>

В теле функции может встретиться инструкция return. Она завершает выполнение функции. После этого управление возвращается той функции, из которой была вызвана данная. Инструкция return может употребляться в двух формах:

return;

return expression;

Первая форма используется в функциях, для которых типом возвращаемого значения является void. Использовать return в таких случаях обязательно, если нужно принудительно завершить работу. (Такое применение return напоминает инструкцию break, представленную в разделе 5.8.) После конечной инструкции функции подразумевается наличие return. Например:

void d_copy( double "src, double *dst, int sz )

{

/* копируем массив "src" в "dst"

* для простоты предполагаем, что они одного размера

*/

// завершение, если хотя бы один из указателей равен 0

if ( !src || !dst )

return;

// завершение,

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных