Программное обеспечение

Язык Си. Шпаргалка.

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

Типичная структура программы

 

[code language=»cpp»]

#include <stdio.h>

int main(void)
{
printf("Привет, это VIRAND.RU");
return 0;
}

[/code]

Типы данных

int — основной целочисленный тип. Си отводит под int не менее 16 разрядов.

long — целое число, которое не меньше наибольшего int. C гарантирует, что под long выделяется 32 разряда.

short — целочисленный тип, не превосходит наибольшего значения int. Однако C гарантирует, что под short будет выделено по меньшей мере 16 разрядов.

signed

unsigned

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

float — тип данных с плавающей запятой. По меньшей мере 6 значащих цифр.

double — тип данных с плавающей запятой. По меньшей мере 10 значащих цифр.

void

_Bool

_Complex

_Imaginary

Объявление переменных

[cpp]

int boys = 32;

int boys = 32, girls = 15;

int boys, girls = 15; //Так делать не рекомендуется. Инициализируется только переменная  girls

char ch = ‘Z’; //правильное объявление char

char ch = Z;//Неправильное объявление char, компилятор примет Z за переменную

char ch = "Z";//Неправильное объявление переменной. Компилятор примет Z за строку.

char ch =’\007′;//Цифровой код управляющей последовательности

[/cpp]

 

 

 

Ввод/вывод

Функция printf

Спецификаторы формата функции printf

%с — символ

%d, %i — десятичное  число со знаком

%e — научный формат: число с плавающей запятой, e-представление

%o — восьмеричное число без знака

%u — десятичное число без знака

%x — шестнадцатеричное число без знака

%p — указатель (обычно отражает шестнадцатеричные числа)

%% — знак %

scanf(«%f», &weight);

Пример printf

printf(«Это пример: %c, %d,  %f, %s, %p», ‘G’, 10, 7.4, «строка», &a);

Модификаторы printf

%10.4f — выводит число, у которого количество цифр не превышает 10, четыре из которых размещаются после десятичной точки.

%3.8s — строка, которая состоит минимум из трех символов, но не превышает 8

Функция scanf

scanf(«%f», &weight);

scanf(«%s»,&name);//при записи вводимой строки в массив name — функция scanf сама добавит null-символ.

 

Функция sizeof

sizeof(int);//определяет размер объекта int в байтах

sizeof(name);//если name — строка, то sizeof вернет размер массива, учитывая нулевой символ

Константы и препроцессор

#define MONTHS 12;//происходит подстановка во время компиляции, переменная MONTHS называется символической константой или литералом.

const int MONTHS 12;// второй способ задания символической константы, но в данном случае MONTHS можно использовать только для чтения.

 

Строки

В C нет никакого специального типа для представления строк. Строки хранятся в массивах из char.  В последней позиции массива хранится нулевой (null) символ — ‘\0’. Таким образом, массив должен иметь хотя бы на одну ячейку больше, чем количество символов, которые мы хотим сохранить.

strlen();//возвращает длину строки без null символа

Массивы

char password[15];

char password[15] = {‘q’,’w’,’e’,’r’,’t’,’y’};//оставшиеся элементы будут инициализированы нулями

int days[MONTHS] = {31,28, [4] = 31,30,31, [1]=29};

ТАК ДЕЛАТЬ НЕЛЬЗЯ:

int oxen [SIZE] { 5 , 3 ,2,8 ) ;
int yaks [SIZE ] ;
yaks = oxen ;
yaks [ SIZE] oxen [ SIZE] ;
yaks [ S I ZE] = { 5 , 3,2 , 8 ) ;

Массив только для чтения необходимо объявлять с ключевым словом const

Многомерные массивы

float revenue[5][12];

int matrix[2][2] =

{

{4,7},

{3,1}

}

Указатели и массивы

array == &array[0];//данное выражение истинно

[cpp]

short dates[SIZE];

short *pti;

pti=dates;

for (index = 0; index < SIZE; index++)

printf("указатели + %d: %10p\n", index, pti+index);

[/cpp]

Когда мы говорим: «прибавить 1 к указателю», то язык Си добавляет одну единицу хранения. Для массивов это означает, что адрес увеличивается до адреса следующего элемента, НО НЕ ДО СЛЕДУЮЩЕГО БАЙТА. Это одна из причин, почему необходимо объявлять вид объекта, на который указывает указатель. Адреса недостаточно, так как компьютер должен знать, сколько нужно байтов для хранения объекта.

Благодаря этому, следующие выражения истинны:

[cpp]

dates + 2 == &date[2]

*(dates + 2) == dates[2]

[/cpp]

Определения функций, работающих с массивами

[cpp]

int sum(int *array, int n)

{

}

&nbsp;

int sum(int ar[], int n)

{

}

[/cpp]

int sum(int rows, int cols, int ar[rows][cols])

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *