小编Ahm*_*afa的帖子

16位C的全局数组

我试图通过使用如下两种方式在我的16位内核中使用全局字符数组:

方式1

在globals.h中

char buffer[512];
Run Code Online (Sandbox Code Playgroud)

在kernel.c中

#include "globals.h"
extern char buffer[512];

void func1
{
printf("Address is %X",&buffer[0]);
}
Run Code Online (Sandbox Code Playgroud)

在module.c中

#include "globals.h"
extern char buffer[512];

void func2
{
printf("Address is %X",&buffer[0]);
}
Run Code Online (Sandbox Code Playgroud)

在这里,我发现两个打印的内存地址是不同的!?

方式2

在globals.h中

extern char buffer[512];
Run Code Online (Sandbox Code Playgroud)

在kernel.c中

#include "globals.h"
char buffer[512];

void func1
{
printf("Address is %X",&buffer[0]);
}
Run Code Online (Sandbox Code Playgroud)

在module.c中

#include "globals.h"
char buffer[512];

void func2
{
printf("Address is %X",&buffer[0]);
}
Run Code Online (Sandbox Code Playgroud)

在这里我也发现两个打印的内存地址都不同!?

我期待打印相同的内存位置,因为它是全局阵列.

任何人都能解释一下吗?

c arrays global

3
推荐指数
1
解决办法
116
查看次数

标签 统计

arrays ×1

c ×1

global ×1