C语言中函数的分类
1.库函数(在使用过程中频繁使用)
2.自定义函数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main()
{
//strcpy-string copy-拷贝字符串
//strlen-string length-计算字符串长度
char arr[] = "ajsifn";
char arr1[] = "#########";
strcpy(arr1, arr);
printf("%s\n", arr1);
return 0;
}
memset函数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main()
{
char arr[] = "hello world";
memset(arr,'*',5);//(目标,替换元素(ASCII),替换字节)替换不能超出目标的存储空间
printf("%s\n", arr);
return 0;
}
自定义函数的组成
ret_type fun_name(para1, * )
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1 函数参数
自定义函数实现交换两个数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
void swap2(int* pa, int* pb)
{
int tmp=0;
tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main()
{
int a=20;
int b = 10;
swap2(&a,&b);
printf("%d%d\n", a,b);
return 0;
}//当实参传给形参的时候,形参实际是实参的临时拷贝
//对形参的修改是不影响实参
传值调用
函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操
作函数外部的变量。
要改变函数外部变量时,要用传址调用。如果仅仅只是要获得一个值,使用传值调用即可。
用函数实现二分查找法
#include <stdio.h>标签:10,arr,return,函数,22,int,mid,include,日记 From: https://blog.51cto.com/u_15831605/5786119
int binary_search(int arr[], int k,int sz)//本质上这里arr是一个指针
{
int left = 0;
int right = sz - 1;
int mid = 0;
while (left <= right)
{
mid = (left + right) / 2;
if (arr[mid] < k) left = mid + 1;
else if (arr[mid]>k) right = mid - 1;
else return(mid);
}
while (left > right) return(-1);
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr, k,sz);//传送的是数组首元素的地址
if (ret == -1) printf("没找到\n");
else printf("找到了,下标是:%d\n", ret);
return 0;
}