АРГУМЕНТЫ КОМАНДНОЙ СТРОКИ

 

У функции main( ) могут быть свои формальные аргументы. В них возникает необходимость, если нужно передать какие-либо значения в программу из командной строки. Каждый параметр, передаваемый в main – это строка.

int main(int argc, char *argv[]) { }//параметры отделяются друг от друга пробелами

argc – определяет кол-во передаваемых параметров в командной строке, включая имя самой программы (если argc=1, то задано только имя самой программы).

*argv[] – это массив указателей на строки; [ ] – означает пусто.

argv[0] – имя самой программы;

argv[1] – первый параметр и т.д.

Пример: расчет 5 + 10 четыре параметра, т.е. argv[3].

Функция main( ) может возвращать значение, если необходимо. Любая программа должна возвращать в DOS код возврата. При нормальном завершении он равен 0. В командных файлах можно анализировать этот код командой IF ERRORLEVEL 0 echo «Ok!». Если нет необходимости возвращать значение, то оператор return не нужен.

 

#include <iostream.h>

int main(int argc, char* argv[]) {

if(argc<2) {//проверка были ли переданы параметры в main

puts(“Нет аргументов в строке”);

exit(1);//выход из программы

}

else {

cout<<”Имя выполняемой программы”<<argv[0]<<endl;

cout<<”Аргумент командной строки”<<argv[1]<<endl;

}

return 0;

}

Если программа завершилась с ошибкой, то можно передать код ошибки в DOS функцией exit(1). Код, который возвращает программа, записывается в переменную окружения ERRORLEVEL. В дальнейшем, в любой другой программе или командном файле этот код можно проанализировать.Если программа отработала успешно, то обычно возращается «0».

ПРОИЗВОДНЫЕ ТИПЫ ДАННЫХ

 

Структуры

 

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

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

Структура – это объект, состоящий из последовательностей поименованных элементов. Каждый элемент имеет свой тип. Структура отличается от массива тем, что её элементы могут иметь различные типы.

 

Для определения нового типа данных нужно его описать:

 

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.

 








Дата добавления: 2016-02-02; просмотров: 863;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.