Это мой файл1 с именем main.c
#include <stdio.h>
#include <stdlib.h>
#define MONTHS 12
void ChangeDay(void);
int* days;
int main(void)
{
days = (int*) malloc(MONTHS * sizeof(int));
if(days != NULL)
ChangeDay();
else
return 1;
printf("%2d.\n", days[0]);
return 0;
}
Глобальная переменная days объявлена как указатель на тип int
, а malloc
используется для выделения места для 12 целых чисел.
Это мой файл 2 под названием day.c
int days[];
void ChangeDay(void)
{
days[0] = 31;
}
При вызове функции ChangeDay
первому элементу массива days присваивается десятичное значение 31.
Это вывод кода:
root @ where: ~ gcc -m32 -Wall -o day main.c day.c
day.c: 1: предупреждение: предполагается, что массив 'days' содержит один элемент
root @ where: ~. / day Ошибка сегментации
Буду признателен, если вы объясните мне эти результаты.
Мои вопросы :
- Как правильно объявлять переменные (включая массивы) в нескольких исходных файлах?
- Как получить доступ к элементу массива с помощью указателя, если они объявлены в разных файлах?
extern
- person Grijesh Chauhan   schedule 24.07.2013malloc
. - person chris   schedule 24.07.2013