Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 1new.rtf
Скачиваний:
5
Добавлен:
09.11.2019
Размер:
442.1 Кб
Скачать

Производные Типы

Вот операции, создающие из основных типов новые типы:

*

указатель на

*const

константный указатель на

&

ссылка на

[]

вектор

()

функция, возвращающая

Например:

char* p

// указатель на символ

char *const q

// константный указатель на символ

char v[10]

// вектор из 10 символов

Все вектора в качестве нижней границы индекса имеют ноль, поэтому в v десять элементов: v[0] ... v[9]. Переменная указатель может содержать адрес объекта соответствующего типа:

char c;

// ...

p = &c; // p указывает на c

Унарное & является операцией взятия адреса.

Выражения и операторы

В C++ имеется богатый набор операций, с помощью которых в выражениях образуются новые значения и изменяются значения переменных. Поток управления в программе задается с помощью операторов, а описания используются для введения в программе имен переменных, констант и т.д. Заметьте, что описания являются операторами, поэтому они свободно могут сочетаться с другими операторами.

Выражения

В C++ имеется большое число операций, и они будут объясняться там, где (и если) это потребуется. Следует учесть, что операции

~

(дополнение)

&

(И)

^

(исключающее ИЛИ)

|

(включающее ИЛИ)

<<

(логический сдвиг влево)

>>

(логический сдвиг вправо)

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

Смысл операции зависит от числа операндов; унарное & является операцией взятия адреса, а бинарное & - это операция логического И. Смысл операции зависит также от типа ее операндов: + в выражении a+b означает сложение с плавающей точкой, если операнды имеют тип float, но целое сложение, если они типа int.

В C++ есть операция присваивания =, а не оператор присваивания, как в некоторых языках. Таким образом, присваивание может встречаться в неожиданном контексте; например, x=sqrt(a=3*x). Это бывает полезно. a=b=c означает присвоение c объекту b, а затем объекту a. Другим свойством операции присваивания является то, что она может совмещаться с большинством бинарных операций. Например, x[i+3]*=4 означает x[i+3]=x[i+3]*4, за исключением того факта, что выражение x[i+3] вычисляется только один раз. Это дает привлекательную степень эффективности без необходимости обращения к оптимизирующим компиляторам. К тому же это более кратко.

В большинстве программ на C++ широко применяются указатели. Унарная операция * разыменовывает указатель, т.е. *p есть объект, на который указывает p. Эта операция также называется косвенной адресацией. Например, если имеется char* p, то *p есть символ, на который указывает p. Часто при работе с указателями бывают полезны операция увеличения ++ и операция уменьшения --. Предположим, p указывает на элемент вектора v, тогда p++ делает p указывающим на следующий элемент.

Операторы выражения

Самый обычный вид оператора - оператор выражение. Он состоит из выражения, за которым следует точка с запятой. Например:

a = b*3+c;

cout << "go go go";

lseek(fd,0,2);

Пустой оператор

Простейшей формой оператора является пустой оператор:

;

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

Блоки

Блок - это возможно пустой список операторов, заключенный в фигурные скобки:

{ a=b+2; b++; }

Блок позволяет рассматривать несколько операторов как один. Область видимости имени, описанного в блоке, простирается до конца блока. Имя можно сделать невидимым с помощью описаний такого же имени во внутренних блоках.

Основная функция программы – main

Каждая программа на C или C++ должна иметь функцию main; куда Вы поместите ее - дело вкуса. Некоторые программисты помещают функцию main в начало файла, другие - в конец. Вне зависимости от ее дислокации, следующие положения всегда применимы.

Аргументы главной функции.

Два параметра передаются в main процедурой начальной загрузки Dev C++: argc, argv.

  • argc, целое, содержащее число аргументов командной строки, передаваемых в main.

  • argv - массив указателей на строки (char *[]).

    • В DOS 3.x и выше arg[0] - это полное имя выполняемой программы.

    • argv[1] указывает на первую строку, набранную в команде DOS после имени программы.

    • argv[2] указывает на вторую строку, набранную после имени программы.

    • argv[argc - 1] указывает на последний аргумент, передаваемый в main.

    • argv[argc] содержит ноль.

Если Вы объявляете какие-либо из этих параметров, Вы

должны объявлять их строго в следующем порядке: argc, argv. Например, следующие объявления правильны:

main()

main(int argc)

main(int argc, char *argv[])

Объявление main(int argc) корректно, но маловероятно, что Вы будете использовать argc в Вашей программе без использования элементов argv.

argc и argv также доступны через глобальные переменные _argc и _argv.

Пример программы.

Приведем пример программы ARGS.EXE, демонстрирующей простой способ использования аргументов, передаваемых в main.

/* Программа ARGS.C */

#include <stdio.h>

#include <stdlib.h>

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

{

int i;

printf("The value of argc is%d \n\n", argc);

printf("These are the %d command-line arguments passed to main: \n\n", argc);

for (i = 0; i < argc; i++);

printf(" argv[%d]: %s\n", i, argv[i]);

printf("\nThe environment string(s) on this system are:\n\n");

for (i = 0; env[i] !=NULL; i++);

printf(" env[%d]: %s\n", i, env[i]);

return 0;

}

Предположим, Вы выполняете ARGS.EXE со следующей командной строкой:

C:>args first_arg "arg with blanks" 3 4 "last but one" stop!

Заметим, что Вы можете передавать аргументы, содержащие пробелы, заключив их в двойные кавычки, как это сделано выше для "arg with blanks" и "last but one".

Вывод ARGS.EXE (предполагая, что переменные среды установлены, как здесь) может быть таким:

The value of argc is 7

These are the 7 command-line arguments passed to main:

argv[0]: C:\TC\TESTARGS.EXE

argv[1]: first_arg

argv[2]: arg with blanks

argv[3]: 3

argv[4]: 4

argv[5]: last but one

argv[6]: stop!

The environment string(s) on this system are:

env[0]: COMSPEC=C:\COMMAND.COM

env[1]: PROMPT=$p $q

env[2]: PATH= C:\SPRINT;C:\DOS;C:\TC

Максимальная общая длина аргументов командной строки, передаваемых в main (включая разделяющие их пробелы и само имя программы) - 128 символов (это - ограничение DOS, т.е. для Windows оно уже больше).