你的程序错误太多,也由于不知你定义函数的真正用途,不便修正你的错误,我以一个反序输出的函数实例,希望你能从中理解函数的调用和定义
#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 好了
}
|