mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-24 10:01:38 +00:00
[c/ru] some improves
This commit is contained in:
parent
b548dad5ee
commit
92faa7ce01
@ -16,7 +16,7 @@ lang: ru-ru
|
|||||||
Держите это руководство в памяти и вы сможете использовать Си максимально эффективно.
|
Держите это руководство в памяти и вы сможете использовать Си максимально эффективно.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
// Однострочный комментарий начинается с // - доступно только после С99.
|
// Однострочный комментарий начинается с // - доступен только после С99.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Многострочный комментарий выглядит так. Работает начиная с С89.
|
Многострочный комментарий выглядит так. Работает начиная с С89.
|
||||||
@ -108,12 +108,10 @@ int main() {
|
|||||||
size_t size = strtoul(buf, NULL, 10); // strtoul парсит строку в беззнаковое целое
|
size_t size = strtoul(buf, NULL, 10); // strtoul парсит строку в беззнаковое целое
|
||||||
int var_length_array[size]; // объявление динамического массива
|
int var_length_array[size]; // объявление динамического массива
|
||||||
printf("sizeof array = %zu\n", sizeof var_length_array);
|
printf("sizeof array = %zu\n", sizeof var_length_array);
|
||||||
|
|
||||||
// Вывод программы (в зависимости от архитектуры) будет таким:
|
// Вывод программы (в зависимости от архитектуры) будет таким:
|
||||||
// > Enter the array size: 10
|
// > Enter the array size: 10
|
||||||
// > sizeof array = 40
|
// > sizeof array = 40
|
||||||
|
|
||||||
|
|
||||||
// Строка – это просто массив символов, оканчивающийся нулевым (NUL (0x00)) байтом
|
// Строка – это просто массив символов, оканчивающийся нулевым (NUL (0x00)) байтом
|
||||||
// представляемым в строке специальным символом '\0'.
|
// представляемым в строке специальным символом '\0'.
|
||||||
// Нам не нужно вставлять нулевой байт в строковой литерал,
|
// Нам не нужно вставлять нулевой байт в строковой литерал,
|
||||||
@ -187,7 +185,6 @@ int main() {
|
|||||||
// - сдвиг в знаковый бит у целого числа (int a = 1 << 32)
|
// - сдвиг в знаковый бит у целого числа (int a = 1 << 32)
|
||||||
// - сдвиг влево отрицательных чисел (int a = -1 << 2)
|
// - сдвиг влево отрицательных чисел (int a = -1 << 2)
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
// Структуры ветвления
|
// Структуры ветвления
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
@ -243,7 +240,6 @@ int main() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
// Форматирование вывода
|
// Форматирование вывода
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
@ -282,7 +278,6 @@ int main() {
|
|||||||
printf("%p\n", (void *)&x); // => Напечатает адрес в памяти, где лежит переменная x
|
printf("%p\n", (void *)&x); // => Напечатает адрес в памяти, где лежит переменная x
|
||||||
// (%p выводит указатель на void *)
|
// (%p выводит указатель на void *)
|
||||||
|
|
||||||
|
|
||||||
// Для объявления указателя нужно поставить * перед именем.
|
// Для объявления указателя нужно поставить * перед именем.
|
||||||
int *px, not_a_pointer; // px это указатель на int
|
int *px, not_a_pointer; // px это указатель на int
|
||||||
px = &x; // сохранит адрес x в px
|
px = &x; // сохранит адрес x в px
|
||||||
@ -372,8 +367,7 @@ int main() {
|
|||||||
// Синтаксис объявления функции:
|
// Синтаксис объявления функции:
|
||||||
// <возвращаемый тип> <имя функции>(аргументы)
|
// <возвращаемый тип> <имя функции>(аргументы)
|
||||||
|
|
||||||
int add_two_ints(int x1, int x2)
|
int add_two_ints(int x1, int x2) {
|
||||||
{
|
|
||||||
return x1 + x2; // Используйте return для возврата значения
|
return x1 + x2; // Используйте return для возврата значения
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,8 +379,7 @@ int add_two_ints(int x1, int x2)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// void означает, что функция ничего не возвращает
|
// void означает, что функция ничего не возвращает
|
||||||
void str_reverse(char *str_in)
|
void str_reverse(char *str_in) {
|
||||||
{
|
|
||||||
char tmp;
|
char tmp;
|
||||||
int ii = 0;
|
int ii = 0;
|
||||||
size_t len = strlen(str_in); // `strlen()` является частью стандартной библиотеки
|
size_t len = strlen(str_in); // `strlen()` является частью стандартной библиотеки
|
||||||
@ -417,10 +410,9 @@ struct rectangle {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// sizeof(struct rectangle) == sizeof(int) + sizeof(int) – не всегда верно
|
// sizeof(struct rectangle) == sizeof(int) + sizeof(int) – не всегда верно
|
||||||
// из-за особенностей компиляции (необычное поведение при отступах)[1].
|
// из-за особенностей компиляции ([необычное поведение при отступах][1]).
|
||||||
|
|
||||||
void function_1()
|
void function_1() {
|
||||||
{
|
|
||||||
struct rectangle my_rec;
|
struct rectangle my_rec;
|
||||||
|
|
||||||
// Доступ к структурам через точку
|
// Доступ к структурам через точку
|
||||||
@ -440,15 +432,13 @@ void function_1()
|
|||||||
// Вы можете применить typedef к структуре, для удобства.
|
// Вы можете применить typedef к структуре, для удобства.
|
||||||
typedef struct rectangle rect;
|
typedef struct rectangle rect;
|
||||||
|
|
||||||
int area(rect r)
|
int area(rect r) {
|
||||||
{
|
|
||||||
return r.width * r.height;
|
return r.width * r.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Если вы имеете большую структуру, можно доступаться к ней "по указателю",
|
// Если вы имеете большую структуру, можно доступаться к ней "по указателю",
|
||||||
// чтобы избежать копирования всей структуры.
|
// чтобы избежать копирования всей структуры.
|
||||||
int area(const rect *r)
|
int area(const rect *r) {
|
||||||
{
|
|
||||||
return r->width * r->height;
|
return r->width * r->height;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -490,4 +480,4 @@ void str_reverse_through_pointer(char *str_in) {
|
|||||||
|
|
||||||
Также не забывайте, что [Google](http://google.com) и [Яндекс](http://yandex.ru) – ваши хорошие друзья.
|
Также не забывайте, что [Google](http://google.com) и [Яндекс](http://yandex.ru) – ваши хорошие друзья.
|
||||||
|
|
||||||
[1] http://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member
|
[1]: http://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member
|
Loading…
Reference in New Issue
Block a user