数组做函数参数
三种写法均可
void bubblesort(int arr[10]) == void bubblesort(int arr[]) == void bubblesort(int *arr)
数组做函数参数时,传递的不再是整个数组,而是数组的首地址,等价于*arr,大小就是一个指针的大小,所以求sizeof就会出问题了
在自定义的函数里面就不能用 n = sizeof(arr) / sizeof(arr[0])求元素个数了
但是在main函数里面可以
所以,当整型数组做函数参数时,通常在函数定义中封装2个参数,一个表示数组首地址,一个表示数组元素个数
int BubbleSort(int src[], int n) ;
int main(void)
{
int arr[10] = {5,8,9,7,1,3,2,133,51,68};
int n = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, n);
for (size_t i = 0; i < 10; i++)
{
printf("%d ",arr[i]);
}
system("pause");
return EXIT_SUCCESS;
}
int BubbleSort(int src[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (src[j] > src[j + 1]) {
int temp = src[j];
src[j] = src[j + 1];
src[j + 1] = temp;
}
}
}
return 0;
}
指针做函数返回值
int *test_func(int a,int b); //返回值是地址
指针做函数返回值,不能返回局部变量的地址值
数组做函数返回值
c语言不允许
只能写成指针形式