Язык программирования С
.
История
Алфавит языка
Алфавит языка
Все остальные символы (включая буквы кириллицы) могут появляться в программе только внутри символьных и строчных констант и в комментариях. Комментарием считается любая последовательность символов заключенная между символами /* и */. Комментарием считается также любая строка, начинающаяся с символа //.
Ключевые слова стандарта С89
Ключевые слова, добавленные стандартом С99
Ключевые слова в С++
Зарезервированные слова в С++
Зарезервированные слова являются стандартными именами языка С++. В принципе, программист может употреблять эти слова не в том смысле, как они трактуются системой. Например, программист может ввести свой собственный алгоритм вычисления функции sin x и обозначить его тем же словом, и даже может обозначить sin любой объект в программе. Однако, делать это не следует без необходимости.
Идентификаторы (имена)
Идентификатор - последовательность буквенно-цифровых символов, начинающаяся с буквы или знака подчеркивания. В стандарте С89 значащими являются как минимум первые 6 символов внешнего имени и первые 31 символ внутреннего имени. В стандарте С99 значащими являются как минимум первые 31 символ внешнего имени и первые 63 символа внутреннего имени. В С++ значащими являются как минимум первые 1024 символа любого имени.
Идентификаторы (имена)
Допустимые: count Test23 Ptr_1 _KPACOTKA
Недопустимые: 1count sizeof Ptr…1 БАЛБЕС
Переменные и константы
Переменная – некоторая именованная область памяти, в которой хранится некоторый двоичный код. Этот двоичный код в процессе решения задачи может изменяться. Переменные бывают: Скалярные и векторные Статические и динамические Глобальные и локальные Атрибуты переменной: тип, имя, значение.
Базовые типы данных
char - целые длиной один байт ’0’ int - целые длиной несколько байт 48 060 0х30 float - c плавающей точкой 48.f .48e2F double - двойной точности 48. +480.0e-1 void - без значения
Целые переменные
Вещественные переменные (с плавающей точкой)
Специальные символьные константы
Модификация базовых типов
Со знаком – signed Короткое – short Без знака – unsigned Длинное – long 1 = sizeof(char) sizeof(short) sizeof(int) sizeof(long) sizeof(float) sizeof(double) sizeof(long double)
Пример:
char c=‘\t’; short s=1; int i; long l; void main() { float f; double d; long double D; }
Глобальные переменные
Локальные автоматические переменные
Спецификаторы класса памяти
auto - Локальная переменная не существует за пределами области видимости. static - Значение переменной постоянно хранится внутри функции или файла. register - Обеспечить доступ к объекту так быстро, как только возможно. extern - Объявляемая переменная определена в другой части программы. extern int x; static int y=0;
Квалификаторы типа
Оператор присваивания
Lvalue = Rvalue Lvalue и Rvalue - идентификаторы Lvalue – именующее выражение (адрес переменной) Rvalue – вычисляемое выражение (значение переменной)
Множественное присваивание x = y = z = 0;
Стенографическое присваивание x ☼ = 10; // x=x ☼ 10;
Арифметические операции
- Вычитание + Сложение * Умножение / Деление % Остаток от деления -- Декремент ++ Инкремент
Пример float y,x = 5/3; //=1.0 y = 5./3; // =1.666… int k=1; ++k; // =2 int m=--k; // k=1, m=1 int n=k++; // k=2, n=1
Операции сравнения и логические операции
&& И || ИЛИ ! НЕ Пример int a,b,c,x=1,y=0; a=x&&y; // = false b=x||y; // = true c=!x; // = false
Поразрядные операции
& И | ИЛИ ^ Сложение по модулю два ~ Дополнение к 1 >> Сдвиг вправо << Сдвиг влево
int x=6,y=3; //…0110,…0011 x & y; // =2 x | y; // =7 x ^ y; // =5 ~y; // = 1…100 = -4 x>>1; // =3 x<<1; // =12
Еще несколько операторов
? : - условное выражение sizeof - определение размера операнда в байтах , - последовательного вычисления (тип) - явное преобразование к заданному типу :: - расширения области видимости
y = x >= 0 ? 1 : -1; I = sizeof(int); J = sizeof I; int k=(y=J, 2*y); float z=(float)5/3; int i; void main() { int i; i=1; ::i=2; …
Массивы
Const int размер = …; Тип имя_переменной [размер]; int A[10];
B[3,4] – не верно
int B[5][10];
B[3][4] - верно
Указатели и ссылки
Указатель – переменная, значением которой является адрес. int x[2],*Ptr_x; Ptr_x = &x[0]; *Ptr++=1; *Ptr=2;
Ссылка – другое имя или еще одно имя объекта. NB: Может быть только инициализирована. int x[]={0,0},&b=x[0]; ++b+=1;
*P
&P
& - операция получения адреса объекта * - операция «разыменования» указателя
Массивы и указатели
Описание
int x[]={1,2,3,4,5};
int x[5]; const int *y=x;
Адрес элемента массива
&x[3]
y+3
Значение элемента массива
x[3]
*(y+3)
Имя массива – неизменяемый указатель, инициализированный начальным значением.
Строки
Строка - одномерный массив символов, заканчивающийся символом с кодом ноль (‘\0’)
const int k=…; char str[k]; // это ещё не строка str[0]=‘H’; str[1]=‘e’; str[2]=str[3]=‘l’; str[4]=‘o’; str[5]=‘\0’; char str0={‘H’,’e’,’l’,’l’,’o’,’\0’}; char* str1=“Hello”;
Двумерные массивы и двойные указатели
const int ik=5, jk=10; void main() { int a[ik][jk]; int* b[]={a[0],a[1],a[2],a[3],a[4]}; int **c=b; int i=4, j=4; *(*b + i*jk +j)=10; }
int* B[];
A
A[0]
A[1]
A[2]
A[3]
A[4]
A[0][0]
…
A[0][4]
A[0][3]
A[0][2]
A[0][1]
A[1][0]
…
A[1][4]
A[1][3]
A[1][2]
A[1][1]
A[2][0]
…
A[2][4]
A[2][3]
A[2][2]
A[2][1]
A[3][0]
…
A[3][4]
A[3][3]
A[3][2]
A[3][1]
A[4][0]
…
A[4][4]
A[4][3]
A[4][2]
A[4][1]
int **C;
Составные типы данных
Структуры
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.