【发布时间】:2021-09-06 10:56:40
【问题描述】:
问题是 x 数组在按值传递模式下从其他函数中正确排序
根据我的理解,数组不能在按值传递模式下从其他函数中排序,它仅在我通过引用传递而我没有传递时才排序,而且 BubbleSort 参数它们只是原始的副本变量,所以当函数完成时,复制变量不会影响主函数中的原始变量,请解释原因并感谢。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void BubbleSort(int a[])
{
int temp=0;
for(int i=0;i<10-1;i++)
{
for(int j=0;j<10-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
int x[11]={7,6,4,5,8,11,14,37,2,9};
BubbleSort(x);
for(int i=0;i<10;i++)
{
printf("%d\n",x[i]);
}
}
【问题讨论】:
-
您不能在 C 中按值传递数组。像
int a[]这样的参数声明被解析为int *a。并且调用BubbleSort(x)和BubbleSort(&x[0])一样
标签: c pointers pass-by-reference bubble-sort pass-by-value