簡體   English   中英

如何使用C中的指針將一個數組的內容復制到另一個數組?

[英]How to copy contents of one array to another using pointers in C?

我有三個指針:

int *x,*y, *Temp;

然后我做了

x = (int *)malloc(sizeof(int)*m);
y = (int *)malloc(sizeof(int)*n);
Temp = (int *)malloc(sizeof(int)*(m+n));

其中m和n是特定值。

接下來,我在“溫度”中輸入了值。

  for(i=0; i < m+n; i++) {
  scanf("%d", Temp+i);
  }

我希望在X中獲得一半的Temp,在y中獲得另一半。 我該怎么做呢?

for(i=0; i < m; i++) {
  x[i] = Temp[i];
}

上面復制內容的代碼不起作用!

另外,如何打印值?

使用memcpy可能是實現所需目標的最簡單方法:

memcpy(x, Temp, m * sizeof*Temp);
memcpy(y, &Temp[m], n * sizeof*Temp);

要打印值,只需使用printf

puts("Values in x:");
for(int i = 0; i < m; ++i) {
      printf("%d\n", x[i]); 
}

puts("Values in y:");
for(int i = 0; i < n; ++i) {
      printf("%d\n", y[i]);
}

您可以使用以下方法來打印值。 我只是用M代替m以獲得更好的清晰度。

for(i=0; i < M; i++) {
printf("VAL: %d\n",x[i]);
}

同樣,您還可以打印另一個數組y

看起來好像並不需要分配所有內存,也似乎不需要復制它。 考慮使用這種替代方法:

int* xy = malloc(sizeof(*xy) * (m+n));
int* x = xy;
int* y = xy + n;
...
free(xy);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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