Си для начинающих. Си для чайников.
Модератор: KopylovSergey
- admin
- Администратор
- Сообщения: 1103
- Зарегистрирован: 18 янв 2012, 01:25
- Откуда: Екатеринбург
- Контактная информация:
Си для начинающих. Си для чайников.
В своё время язык Си казался чем-то недостижимым - "а как..., а что..., а почему..., да это же...., ну куда мне... ", ну и прочие заморочки мозга
Не знаю почему так автор назвал, но это реально объяснено на "пальцах".
P.S. после усвоения предложенного материала, необходимо опираться на "Язык Си" Керниган, Ричи.
Без проблем находиться в инете!
Не знаю почему так автор назвал, но это реально объяснено на "пальцах".
P.S. после усвоения предложенного материала, необходимо опираться на "Язык Си" Керниган, Ричи.
Без проблем находиться в инете!
- Вложения
-
- c.rar
- (216.56 КБ) 1414 скачиваний
- admin
- Администратор
- Сообщения: 1103
- Зарегистрирован: 18 янв 2012, 01:25
- Откуда: Екатеринбург
- Контактная информация:
Re: Си для начинающих. Си для чайников.
Объявление структуры в *.h файле. Объявление структуры как extern
В *.h файле обьявляется следующее:
В одном *.c файле определяется обьект:
В любом другом *.c файле, имеющем строку #include "*.h", обьектом Foo можно пользоваться.
Как использовать extern?
extern используется при объявлении переменной, указывая компилятору на то, что определение переменной используется далее в программе (в других файлах)
В *.h файле обьявляется следующее:
Код: Выделить всё
struct _Foo
{
...
}; // Это обьявление структуры как типа
extern struct _Foo Foo; // Это обьявление внешнего обьекта Foo типа struct _Foo
Код: Выделить всё
#include "*.h"
...
struct _Foo Foo; // Это определение обьекта Foo типа struct _Foo
Как использовать extern?
extern используется при объявлении переменной, указывая компилятору на то, что определение переменной используется далее в программе (в других файлах)
Код: Выделить всё
/* Определение неинициализированной глобальной переменной */
int x_global_uninit;
/* Определение инициализированной глобальной переменной */
int x_global_init = 1;
/* Определение неинициализированной глобальной переменной, к которой
* можно обратиться по имени только в пределах этого C файла */
static int y_global_uninit;
/* Определение инициализированной глобальной переменной, к которой
* можно обратиться по имени только в пределах этого C файла */
static int y_global_init = 2;
/* Объявление глобальной переменной, которая определена где-нибудь
* в другом месте программы */
extern int z_global;
/* Объявлени функции, которая определена где-нибудь другом месте
* программы (Вы можете добавить впереди "extern", однако это
* необязательно) */
int fn_a(int x, int y);
/* Определение функции. Однако будучи помеченной как static, её можно
* вызвать по имени только в пределах этого C файла. */
static int fn_b(int x)
{
return x+1;
}
/* Определение функции. */
/* Параметр функции считается локальной переменной. */
int fn_c(int x_local)
{
/* Определение неинициализированной локальной переменной */
int y_local_uninit;
/* Определение инициализированной локальной переменной */
int y_local_init = 3;
/* Код, который обращается к локальным и глобальным переменным,
* а также функциям по имени */
x_global_uninit = fn_a(x_local, x_global_init);
y_local_uninit = fn_a(x_local, y_local_init);
y_local_uninit += fn_b(z_global);
return (x_global_uninit + y_local_uninit);
}
- admin
- Администратор
- Сообщения: 1103
- Зарегистрирован: 18 янв 2012, 01:25
- Откуда: Екатеринбург
- Контактная информация:
Re: Си для начинающих. Си для чайников.
Отличная книга по правилам программирования на Си и Си++
"Верёвка достаточной длины чтобы ... выстрелить себе в ногу. Правила программирования на С и C++" Ален И. Голуб \ Allen I. Holub
"Верёвка достаточной длины чтобы ... выстрелить себе в ногу. Правила программирования на С и C++" Ален И. Голуб \ Allen I. Holub
- admin
- Администратор
- Сообщения: 1103
- Зарегистрирован: 18 янв 2012, 01:25
- Откуда: Екатеринбург
- Контактная информация:
Re: Си для начинающих. Си для чайников.
Заголовочные файлы (*.h)
Заголовочные файлы устанавливают соглашения по использованию общих идентификаторов (имен) в различных частях программы. Если, например, функция func () реализована в файле а.с, а вызывается в файле Ь.с, то в оба файла требуется включить директиву #inciude "имя заголовочного файла", содержащий объявление (прототип) функции func ().
Заголовочные файлы устанавливают соглашения по использованию общих идентификаторов (имен) в различных частях программы. Если, например, функция func () реализована в файле а.с, а вызывается в файле Ь.с, то в оба файла требуется включить директиву #inciude "имя заголовочного файла", содержащий объявление (прототип) функции func ().