这是我的名为main.c的文件 1
#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 被声明为指向 type 的指针int
,
malloc
用于为 12 个整数分配空间。
这是我的文件 2,名为day.c
int days[];
void ChangeDay(void)
{
days[0] = 31;
}
调用该函数时ChangeDay
,会将十进制值 31 分配给数组days的第一个元素。
这是代码输出:
root@where:~gcc -m32 -Wall -o day main.c day.c
day.c:1: 警告:数组 'days' 假定有一个元素
root@where:~./day 分段错误
如果您向我解释这个结果,我将不胜感激。
我的问题:
- 跨多个源文件声明变量(包括数组)的正确方法是什么?
- 当它们在不同的文件中声明时,如何使用指针访问数组的元素?