我有一个extern数组,我希望能够通过使用局部变量来修改它:
标头文件
typedef char VAR[200]
extern VAR B={0}
主要文件
VAR S=B;
有没有办法在不复制数组的情况下做到这一点?
答案 0 :(得分:3)
我希望能够通过使用局部变量
来修改它有没有办法在不复制数组的情况下做到这一点?
创建指向extern
数组的指针。
#define VAR_N 200
typedef char VAR[VAR_N];
extern VAR B;
void foo(void) {
VAR *p = &B; // p is a pointer to B
printf("%c\n", B[42]); // print original value of one element
(*p)[42] = 'x';
printf("%c\n", B[42]); // print changed value of one element
// modify all elements of B
for (size_t i=0; i<VAR_N; i++) {
(*p)[42] = 'y';
}
printf("%c\n", B[42]); // print changed value of one element
// modify all elements of B
// Notice *p has the same size as B
size_t n = sizeof *p / sizeof (*p)[0];
memset(p, 'z', n);
printf("%c\n", B[42]); // print changed value of one element
}