小编Dr.*_*ava的帖子

在C中交换2个数组

我需要在一个函数中交换2个数组的值。问题是我可以更改主体中的任何内容,仅更改函数本身即可。它应该接收2个整数数组,并交换它们。问题是,我不知道数组的大小,出于我的理解,它们甚至可以是不同的大小。尝试以下代码:

    int main()
{
    int size = 4;  //Please notice that I'm using this only to print the array
    int a[] = {1,2,3,4};
    int b[] = {5,6,7,8};
    printArr(a,"a",size);
    printArr(b,"b",size);
    swapArray(a,b);
    printf("Swapped:\n");
    printArr(a,"a",size);
    printArr(b,"b",size);
}
Run Code Online (Sandbox Code Playgroud)

和这个功能:

 void swapArray(int **a,int **b)
{
    int *p = *a;
    *a = *b;
    *b = p;
}
Run Code Online (Sandbox Code Playgroud)

而printArr只是打印数组:

void printArr(int arr[],char name[],int size)
{
    printf("%s:\t",name);
    for(int i=0;i<size;i++){
        printf("%d\t",arr[i]);
    }
    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

我得到一个非常奇怪的结果:

a:   1    2    3   4
b:   5    6    7   8
Swapped:
a:   5    6 …
Run Code Online (Sandbox Code Playgroud)

c arrays swap pointers

2
推荐指数
2
解决办法
5115
查看次数

标签 统计

arrays ×1

c ×1

pointers ×1

swap ×1