summaryrefslogtreecommitdiffhomepage
path: root/ru-ru/c-ru.html.markdown
diff options
context:
space:
mode:
authorAndrew Popov <evlogij@gmail.com>2013-11-18 05:08:17 +0400
committerAndrew Popov <evlogij@gmail.com>2013-11-18 05:08:17 +0400
commit92faa7ce01ce727a2f7fc6d8bcf407e8547dfe1b (patch)
tree25a111b36f4d35e885c6d05615ece07188bb7226 /ru-ru/c-ru.html.markdown
parentb548dad5ee5d1c13f9cb61d6ce43a3141f7a8004 (diff)
[c/ru] some improves
Diffstat (limited to 'ru-ru/c-ru.html.markdown')
-rw-r--r--ru-ru/c-ru.html.markdown26
1 files changed, 8 insertions, 18 deletions
diff --git a/ru-ru/c-ru.html.markdown b/ru-ru/c-ru.html.markdown
index 0b39586a..59d3c3b5 100644
--- a/ru-ru/c-ru.html.markdown
+++ b/ru-ru/c-ru.html.markdown
@@ -16,7 +16,7 @@ lang: ru-ru
Держите это руководство в памяти и вы сможете использовать Си максимально эффективно.
```c
-// Однострочный комментарий начинается с // - доступно только после С99.
+// Однострочный комментарий начинается с // - доступен только после С99.
/*
Многострочный комментарий выглядит так. Работает начиная с С89.
@@ -108,12 +108,10 @@ int main() {
size_t size = strtoul(buf, NULL, 10); // strtoul парсит строку в беззнаковое целое
int var_length_array[size]; // объявление динамического массива
printf("sizeof array = %zu\n", sizeof var_length_array);
-
// Вывод программы (в зависимости от архитектуры) будет таким:
// > Enter the array size: 10
// > sizeof array = 40
-
// Строка – это просто массив символов, оканчивающийся нулевым (NUL (0x00)) байтом
// представляемым в строке специальным символом '\0'.
// Нам не нужно вставлять нулевой байт в строковой литерал,
@@ -187,7 +185,6 @@ int main() {
// - сдвиг в знаковый бит у целого числа (int a = 1 << 32)
// - сдвиг влево отрицательных чисел (int a = -1 << 2)
-
///////////////////////////////////////
// Структуры ветвления
///////////////////////////////////////
@@ -243,7 +240,6 @@ int main() {
break;
}
-
///////////////////////////////////////
// Форматирование вывода
///////////////////////////////////////
@@ -282,7 +278,6 @@ int main() {
printf("%p\n", (void *)&x); // => Напечатает адрес в памяти, где лежит переменная x
// (%p выводит указатель на void *)
-
// Для объявления указателя нужно поставить * перед именем.
int *px, not_a_pointer; // px это указатель на int
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 для возврата значения
}
@@ -385,8 +379,7 @@ int add_two_ints(int x1, int x2)
*/
// void означает, что функция ничего не возвращает
-void str_reverse(char *str_in)
-{
+void str_reverse(char *str_in) {
char tmp;
int ii = 0;
size_t len = strlen(str_in); // `strlen()` является частью стандартной библиотеки
@@ -417,10 +410,9 @@ struct rectangle {
};
// sizeof(struct rectangle) == sizeof(int) + sizeof(int) – не всегда верно
-// из-за особенностей компиляции (необычное поведение при отступах)[1].
+// из-за особенностей компиляции ([необычное поведение при отступах][1]).
-void function_1()
-{
+void function_1() {
struct rectangle my_rec;
// Доступ к структурам через точку
@@ -440,15 +432,13 @@ void function_1()
// Вы можете применить typedef к структуре, для удобства.
typedef struct rectangle rect;
-int area(rect r)
-{
+int area(rect r) {
return r.width * r.height;
}
// Если вы имеете большую структуру, можно доступаться к ней "по указателю",
// чтобы избежать копирования всей структуры.
-int area(const rect *r)
-{
+int area(const rect *r) {
return r->width * r->height;
}
@@ -490,4 +480,4 @@ void str_reverse_through_pointer(char *str_in) {
Также не забывайте, что [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 \ No newline at end of file
+[1]: http://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member \ No newline at end of file