自定义函数
函数返回类型的地方写void表示这个函数不返回任何值
交换函数 主函数a=10 b=20
如果写int x,int y 会发现主函数的地址不一样,那么两个独立空间交换就没有意义
所以主函数的a,b应 swap(&a,&b)
viod swop(int *pa,int *pb)
{
int z = 0;
z = *pa;
*pa = *pb;
*pb = z;
}
函数的参数
a,b &a,&b 实际参数
int x,int y 形式参数
函数的调用:传值调用(实参和形参没有关系),传址调用(实参和形参有关系)
数组传参,实际不是传递数组本身,仅仅传过去了数组首元素的地址
所以求元素个数要在函数外部去求
int ssz(int a[], int s, int z)
{
int left = 0;
int right = z - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (a[mid] < s)
{
left = mid + 1;
}
else if (a[mid] > s)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k =0;
scanf("%d", &k);
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = ssz(arr,k,sz);
if (-1 == ret)
{
printf("找不到\n");
}
else
{
printf("地址为 %d\n", ret);
}
return 0;
}
函数的嵌套调用和链式访问
嵌套调用:例如在自定义函数时可以用自定义过的函数
链式访问:如printf("%s\n", strcpy(arr1, arr2));
printf("%d\n", printf("%d", printf("%d", 43)));
结果为4321
原因:printf的返回值是打印在屏幕上的字符的个数