簡體   English   中英

將外部數組分配給局部變量而不復制數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM