首页 > 解决方案 > 将变量引用到现有数组

问题描述

我对 C 很陌生,并开始使用指针。我还没有找到将数组分配给多个变量的方法。理想情况下我想要的是:

char myArray[10] = "test";
char (*p)[10] = &myArray;
char anotherArray[10];
anotherArray = *p;

这不起作用,我不知道为什么。我找到了一种使用 for 循环“复制”数组的方法,

for (int i = 0; i < 10; i++)
{
   anotherArray[i] = myArray[i];
}

我不知道这样做是否是一种好习惯,以及是否有更简单的方法。

数组内容不应该改变,所以我只想有一个简单的方法来做到这一点:

firstArr[size] = "content";
secondArr = firstArr;

标签: carrayspointersvariable-assignment

解决方案


您不能在 C 中分配数组,既不能单独也不能通过取消引用指向数组的指针,语法根本不允许这样做。

数组通常用memcpy. 如果它们是字符串,您也可以使用strcpy,它会向上复制,直到找到字符串空终止符。

在您的示例中,这将是strcpy(anotherArray, *p);. 但是使用类型的数组指针char (*)[10]有点奇怪,使用指向数组第一个元素的指针更为常见。我建议您将代码更改为:

#include <stdio.h>
#include <string.h>

int main(void) 
{
  char input[10] = "test";
  char* p = input;
  char anotherArray[10];

  strcpy(anotherArray, p);
  puts(anotherArray);
}

推荐阅读