繁体   English   中英

'var = &Binary[0][0][0][0]' 在 C 中是什么意思?

[英]What does 'var = &Binary[0][0][0][0]' mean in C?

我看到了这个作业:

u = &Binary[0][0][0][0]

在 for 循环中:

for (i = 0, u = &Binary[0][0][0][0]; i < MAX_ADDRESSES; i++, u++)

从本节:

#define ILLEGAL_VALUE 0xFFFF
#define MAX_MODULES 8
#define MAX_SECTORS 16
#define MAX_SYLLABLES 3
#define MAX_WORDS 256
#define MAX_ADDRESSES (MAX_MODULES * MAX_SECTORS * MAX_SYLLABLES * MAX_WORDS)

...

int i;
uint16_t *u;

// Initialize the binary as completely unused.
for (i = 0, u = &Binary[0][0][0][0]; i < MAX_ADDRESSES; i++, u++)
  *u = ILLEGAL_VALUE;

对于汇编程序。

我对c(或其他编译语言)不是很熟悉,awk有点类似于c。

在 awk 中var[x]是一个数组,但这似乎不是一个数组或任何其他变量。

这段代码' &Binary[0][0][0][0] '是什么?

编辑:

确实我发现了这个:

typedef uint16_t
    BinaryImage_t[MAX_MODULES][MAX_SECTORS][MAX_SYLLABLES][MAX_WORDS];
#define ILLEGAL_VALUE 0xFFFF

所以它毕竟是一个数组!

但是,我对 & 符号作为数组名称的第一个字符感到惊讶?

代码中的某处可能是一个名为Binary的多维数组的声明,最有可能是uint16_t类型的 4 维数组(16 位无符号整数)

uint16_t Binary[MAX_MODULES][MAX_SECTORS][MAX_SYLLABLES][MAX_WORDS];

这个表达式: &Binary[0][0][0][0]

这个多维数组中第一个元素的地址 虽然数组被声明为 4 维数组,但似乎 for 循环只是通过指针枚举数组中的所有元素,以使用ILLEGAL_VALUE常量初始化每个元素。

对于它的价值,for循环可能会替换为:

memset(Binary, 0xff, sizeof(Binary));

关于:

u = &Binary[0][0][0][0]

这意味着用 4 维数组中第一个条目的地址设置u的内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM