[英]Assign whole array into another array in C via a struct
我是一名學生,我將在學校做有關陣列的演講。 我有應該將整個數組分配給另一個數組的代碼。
#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;
}
arr1.data[i]
比鍵入arr1[i]
更令人討厭。 我想寫更多關於最后一點的信息。
基本上,您具有在編譯時已知的固定d的d維向量。 如果d可以在程序的將來版本中進行更改,這可能會很有用,但是我想這是極不可能的情況,並且在這種應用程序中純結構會更好。 普通結構是指結構不僅僅用作單個數組的最小包裝; 確保它們仍可以包含數組作為成員。
您還需要復制數組的各個部分並分別分配它們的功能。 memcpy()
函數memcpy()
目的。 您甚至可以將其與結構中的數組一起使用,例如本問題中的數組。
查看數組分配的另一種方法是通過指針。 有時,您不需要兩個不同的內存塊,而只需要幾個名稱。 在這種情況下,應該使用指向內存的指針,從而避免復制數組。 指針分配既快速又簡單。
初始化程序應使用大括號 :
INT_ARR arr2 = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
外部的用於結構,內部的用於數組。
int i
。 我猜這是測試您的代碼的遺物。 int main(void)
而不是int main()
。 后者是不建議使用的語法,在將來的C版本中可能會刪除。在函數聲明(而不是定義)中,空括號表示“我什么也沒說參數”。 使用此方法代替顯式的void
會導致非常不愉快的驚喜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.