Параметры КОМАНДНОЙ СТРОКИ
У функции main() могут быть свои формальные аргументы. В них возникает необходимость, если нужно передать какие-либо значения в программу из командной строки.
int main(int argc, char *argv[]) {}
argc – определяет кол-во передаваемых параметров в командной строке, включая имя самой программ.
*argv[] – это массив указателей на строки.
argv[0] – имя самой программы;
argv[1] – первый параметр и т.д.
Функция main() может возвращать значение, если необходимо. Любая программа должна возвращать в DOS код возврата. При нормальном завершении он равен 0. В командных файлах можно анализировать этот код командой IF ERRORLEVEL 0 echo «Ok!». Если нет необходимости возвращать значение, то оператор return не нужен.
#include <iostream.h>
int main(int argc, char* argv[]) {
if(argc<2) {
puts(“Нет аргументов в строке”);
exit(1);
}
else {
cout<<”Имя выполняемой программы”<<argv[0]<<endl;
cout<<”Аргумент командной строки”<<argv[1]<<endl;
}
return 0;
}
Если программа завершилась с ошибкой, то можно передать код ошибки в DOS функцией exit(1).
ПРОИЗВОДНЫЕ ТИПЫ ДАННЫХ
Структуры
Рассмотрим новый тип данных - структуру. Он не только гибок для представления разнообразных данных, но и позволяет создавать новые типы данных.
Пример использования - создание каталога книг. Каждая книга имеет следующие атрибуты: шифр, название, автора, издательство, год издания, число страниц, тираж, цену. Это несколько массивов. Очень сложно организовать одновременную работу с каталогом, если нужно их упорядочить по названиям, авторам, цене и так далее. Лучше иметь один массив, в котором каждый элемент содержит всю информацию о книге.
Структура – это объект, состоящий из последовательностей поименнованных элементов. Каждый элемент имеет свой тип.
Для определения нового типа данных нужно его описать:
struct book {
char title [81];
char author[30];
float value;
};
book – это имя нового типа данных.
Сруктурный шаблон является основной схемой, описывающей, как образуется новый тип. struct- ключевое слово, имя типа структуры book - необязателен, если сразу определить имя переменной, то его можно не вводить.
struct {
char title [81];
char author[30];
float value;
}libry;
Каждый элемент структуры определяется своим собственным описанием. Это переменные и массивы стандартных типов данных.
Шаблон является схемой без содержания. Он сообщает компилятору, как сделать что-то, но ничего не делает в программе, а вот создание структурной переменной, это и есть смысл слова «структура». Согласно шаблону под эту переменную выделяется память, равная сумме всех элементов (81).
struct book играет ту же роль, что и int, float перед именем переменной.
struct book doyle, panshin;
Для доступа к элементам структурной переменной используется операция точка. Имя переменной, точка, имя элемента структуры.
void main(void) {
struct book libry; //описание перем-й типа book
puts("Введите название книги");
gets(libry.title);
puts("Введите фамилию автора");
gets(libry.author);
puts("Введите цену книги");
scanf("%f",&libry.value);
printf("%s, %s, %p.2f",libry.title,libry.author,libry.value);
}
Структурную переменную можно инициализировать:
struct book libry={"Руслан и Людмила", "А.С.Пушкин", 1.50};
Массивы структур
Если переменных типа структура много, то определяется массив структур.
void main(void){
struct book libry[100];
int i;
for(i=0; i<100; i++){
puts("Введите название книги");
gets(libry[i].title);
puts("Введите автора книги");
gets(libry[i], author);
puts("Введите цену книги");
scanf("%f",&libry[i].value);
}
}
Индекс применяется к имени массива структур libry[i].
Если libry[2].title[3] – это 4-й элемент в title в 3-й структуре типа book.
Дата добавления: 2018-11-25; просмотров: 268;