簡體   English   中英

將數組分配給其他變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM