|
发表于 2020-11-22 03:50:51
|
显示全部楼层
本楼为最佳答案
你的程序错误太多,也由于不知你定义函数的真正用途,不便修正你的错误,我以一个反序输出的函数实例,希望你能从中理解函数的调用和定义
- #include<stdio.h>
- int test(int *p,int n); //定义函数名,不能使用 try ,这里我改为了 test
- int main()
- {
- int i,*p; // 定义一个指针变量
- int array[10] = {1,2,3,4,5,6,7,8,9,10};
- p = array; // 将数组的首地址赋给指针
- test(p, 10); // 调用函数,可以用数组名,也可以用指针。只要将首地址传给函数即,无需将10个元素值全部传过去
- for (i = 0; i < 10; i++)
- {
- printf("array[%d] = %d ",i,array[i]); // 输出反序后的数组
- }
- return 0;
- }
- int test(int *p,int n) // 定义函数体,实现预期的目的
- {
- int i, j, temp;
- for (i = 0; i < n; i++) // n 是函数接收到的实参,即数组元素的个数
- {
- for (j = 0;j < n - 1;j++) // 此处必须要少一个,保证 j + 1 不越界
- {
- if (*(p + j) > *(p + j + 1)) // p 是主函数传递过来的数组的首地址,p + j 就是第 j 个元素
- {
- temp = *(p + j);
- *(p + j) = *(p + j + 1);
- *(p +j + 1) = temp;
- }
- }
- }
- return 0; // 函数运行完成后,根据需要返回,本例是根据接收到的数组地址,直接改变了数组元素的值,所以返回什么都没关系,但程序要求必须要有一个返回值,那就返回 0 好了
- }
复制代码 |
|