【发布时间】:2011-01-01 17:16:02
【问题描述】:
#include <stdio.h>
#define MEM_SIZE 16
typedef struct memory_contents{
unsigned char mem[MEM_SIZE]; /* memory */
} mem;
mem init(char prog[]){
mem chip = {prog};
return chip;
}
int main(int argc, char *argv[]){
char memory[MEM_SIZE] = {0}; /* zero out whole array */
mem chip = init(memory);
printf("%d\n", chip.mem[0]);
return 0;
}
我是否认为这段代码的作用(特别是 init 函数)是尝试将变量“内存”的地址放入结构的数组中? (因此这就是它打印非零值的原因)
我想要实现的是初始化结构,使结构的 mem 数组是 prog[] 参数。这样做的首选或最佳方式是什么?我可以使结构的 mem 指向大小为 MEM_SIZE 的数组的第一个元素的指针,但我觉得这可能会导致问题:如果我稍后在 main 中更改内存数组,它也会更改芯片数组中的值.
【问题讨论】:
标签: c arrays struct initialization