我试图通过使用如下两种方式在我的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)
在这里我也发现两个打印的内存地址都不同!?
我期待打印相同的内存位置,因为它是全局阵列.
任何人都能解释一下吗?