c - 将变量引用到现有数组
问题描述
我对 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;
解决方案
您不能在 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);
}
推荐阅读
- javascript - 有没有办法使用 Expo 获取设备的 IP 地址?
- java - 如何在 Java 中将 int 数据转换为压缩十进制
- css - 我可以选择具有类(任何类)的元素吗
- javascript - 如何在没有鼠标事件的情况下在openlayers中从其他世界中找到当前世界中的等效坐标
- html - 变量插入闪烁功能
- hive - HIve:表创建失败并显示“由于 OWN_TASK_FAILURE 导致顶点未成功”
- json - Scala Play:将大型 JSON 模板外部化的方法是什么?
- python - 如何使 scipy.optimize.curve_fit 产生更好的正弦回归拟合?
- javascript - javascript window.open 没有为不同的网址打开不同的窗口?
- jquery - 图像相乘