[英]Assign array to a different variable
這是我的代碼的一部分
int river(int a[], int n){
int sorted[] = a;
}
n是數組的大小
我嘗試了幾種不同的方法,包括
sorted[n]
但是我每次都會遇到問題。 我想做的是用更改后的變量名復制數組。 該數組將完全相同,只是存儲在一個不同的變量中(因為我想獲取信息但不修改原始數組)。
這是否由於與動態更改數組大小有關而無法實現?還是我只是想念這一點?
謝謝!
首先,數組不可分配。 您可以將一個數組的內容復制到另一個數組中,也可以獲取指向數組第一個元素的指針。 例如
int a[42] = {0};
int* b = a; // now you can access a's elements as b[0], b[1], etc.
int c[42];
memcpy(c, a, 42*sizeof(int)); //copy elements of a into c
二,要注意函數簽名
int foo(int a[]);
是另一種說法
int foo(int* a);
即,它可以使用任何指向int的指針,甚至不指向數組的指針。
考慮到這一點,您可以看到很容易丟失數組大小信息,這就是為什么需要將大小作為參數傳遞的原因:
int foo(int a[], size_t n);
int a[42];
foo(a, 42);
現在,在函數內部,您可以將一個數組的元素復制到另一個數組中:
int foo(int* a, size_t n)
{
int sorted[n];
memcpy(sorted, a, n * sizeof(int));
// use sorted
....
return 0;
}
您需要自己為數組的新副本分配空間。
int *sorted = malloc(n * sizeof(int));
memcpy(sorted, a, n * sizeof(int));
只需這樣嘗試...
for(int i=0;i<n;i++)
sorted[i]=a[i];
如果要使用動態內存分配malloc
,請嘗試以下操作
int *sorted = malloc(n * sizeof(int));
memcpy(sorted, a, n * sizeof(int));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.