【发布时间】:2020-10-01 16:27:33
【问题描述】:
我有一个程序可以对某个数字进行排序:
#include <stdio.h>
void sort(int x[], int sizeArr){
int i,j,temp=0;
for(i=0;i<sizeArr;i++){
for(j=0;j<sizeArr-1;j++){
if(x[j]>x[j+1]){
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
}
}
}
int main()
{
int data[]={5,1,2,4,3};
int sizeArr = sizeof(data)/sizeof(data[0]);
int i;
printf("Data Array\n");
for(i=0;i<sizeArr;i++){
printf("Data no.%d= %d\n", i+1, data[i]);
}
printf("\n");
sort(data,sizeArr);
printf("Data Array\n");
for(i=0;i<sizeArr;i++){
printf("Data no.%d= %d\n", i+1, data[i]);
}
return 0;
}
结果:
Data Array
Data no.1= 5
Data no.2= 1
Data no.3= 2
Data no.4= 4
Data no.5= 3
Data Array
Data no.1= 1
Data no.2= 2
Data no.3= 3
Data no.4= 4
Data no.5= 5
还有一个类似的程序,但没有数组:
#include <stdio.h>
void sort(int x){
x=5;
}
int main()
{
int data=3;
printf("Data = %d\n", data);
printf("\n");
sort(data);
printf("Data = %d\n", data);
return 0;
}
结果:
Data = 3
Data = 3
我想问的是:
- sort() 中 x[] 数组的更改会如何影响 main() 中的 data[] 数组?
- 为什么 x 变量不会影响第二个程序中的 data 变量?
- 是否可以使 x[] 数组独立于 data[] 数组?
如果这是一个愚蠢的问题并且我的英语不好,我很抱歉。谢谢。
【问题讨论】:
-
函数声明
void sort(int x[], int sizeArr)与void sort(int *x, int sizeArr)相同。也就是说,您将 pointer 传递给数组的第一个元素。你没有传递数组本身。 -
(这是你必须学习的那些奇怪的 C 规则之一。不,没有任何逻辑)