【发布时间】:2021-06-06 03:42:33
【问题描述】:
int *bubble_sort(int[]);
void main()
{
int arr[10]={ 10, 9, 7, 101, 23, 44, 12, 78, 34, 23};
printf("\n%d\n",bubble_sort(arr));
int *p = bubble_sort(arr);
printf("\nprinting sorted elements ...\n");
for(int i=0;i<10;i++)
printf("%d\n",p[i]);
return 0;
}
int *bubble_sort(int a[])
{
int i,j,temp;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j]=a[j+1];
a[j+1] = temp;
}
}
}
printf("%d",a);
return a;
}
在主函数中,我调用了冒泡排序,它返回数组的基本位置并打印出该位置。即使它指向相同的内存位置,仍然会打印两次地址。请分享您对这种行为的看法。 待分析的行"printf("\n%d\n",bubble_sort(arr));"
【问题讨论】:
-
您将地址打印在
bubble_sort的正文中。调用bubble_sort作为printf的参数会打印一次,printf会打印第二次。