[英]Assign extern array to local variable without copying the array
我有一個外部數組,我希望能夠使用局部變量來修改它,例如:
頭文件
typedef char VAR[200]
extern VAR B={0}
主文件
VAR S=B;
有什么方法可以在不復制數組的情況下做到這一點?
我希望能夠通過使用局部變量來修改它
有什么方法可以在不復制數組的情況下做到這一點?
創建一個指向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)[i] = '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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.