我是学生,我将在学校介绍阵列。我有这个代码,应该将整个数组分配到另一个数组。
#define MAX 10
#include <stdio.h>
typedef struct {
int data[MAX];
} INT_ARR;
int main()
{
int i;
INT_ARR arr1 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
INT_ARR arr2 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
arr1 = arr2;
return 0;
}
答案 0 :(得分:3)
arr1.data[i]
比键入arr1[i]
更烦人。 我想写更多关于最后一点的内容。
基本上你有一个固定d的d维向量,在编译时已知。如果d可以在程序的未来版本中更改,这可能很有用,但我想这是一个极不可能的场景,并且在这样的应用程序中,简单的结构会更好。通过简单结构我的意思是结构不仅用作单个数组的最小包装;确定它们仍然可以包含作为成员的数组。
您需要的更多功能是能够复制数组的各个部分并分别分配它们。 memcpy()
函数用于此目的。你甚至可以使用结构内部的数组,就像这个问题中的数组一样。
查看数组赋值的另一种方法是通过指针。有时你不需要有两个不同的内存块,你只需要几个名字。在这种情况下,您应该使用指向内存的指针,从而避免复制数组。指针分配快速而简单。
初始值设定项应具有双括号:
INT_ARR arr2 = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
外部用于结构,内部用于数组。
int i
。我想这是测试代码时的遗留问题。int main(void)
代替int main()
。后者是不推荐使用的语法,可能会在C的未来版本中删除。在函数声明(不是定义)中,空括号表示“我不会对参数说什么”。使用此代替显式void
可能会导致非常不愉快的意外。答案 1 :(得分:1)