函数function
先来康康函数的定义

——From Wikipedia, the free encyclopedia
在c语言中,函数分为库函数和自定义函数
库函数:

——图片来自百度

——图片来自课堂视频
/*拷贝字符串*/
//用include添加库函数
//选中库函数右击可打开.h函数
int main()
{
  char arr1[]="hello";
  char arr2[20]="###########";
  strcpy(arr2, arr1);//把arr1拷贝至arr2
  //strcpy—string copy—字符串拷贝
  printf("%s\n",arr2);//结果为hello
  return 0;
}
//用include添加库函数
int main()
{
  char arr[]="hello";
  memset(arr,'*',2);//用*替换hello前2个字符
  printf("%s\n",arr);//结果为**llo
  return 0;
}/*利用函数进行值的互换*/
//介是错误的~~~示范~
//用include添加库函数
void Swap(int pa,int pb)
{
  int tmp;
  tmp = pa;
  pa = pb;
  pb = tmp;
}
int main()
{
  int a=10;
  int b=20;
  printf("a=%d b=%d\n",a,b);
  Swap(a,b);
  //a b作为实参传递给n1,n2,n1和n2实现了互换,
  //但是值的传递是单向的,
  //n1和n2的值并不能返回到实参a,b中,因此a,b还是原先的值
  printf("swapped a=%d b=%d",a,b);
  return 0;
}
//介是错误的~~~/*利用函数进行值的互换*/
//介是正确哒!
//用include添加库函数
void Swap(int *pa,int *pb)
{
  int tmp;
  tmp = *pa;
  *pa = *pb;
  *pb = tmp;
}
int main()
{
  int a=10;
  int b=20;
  printf("a=%d b=%d\n",a,b);
  Swap(&a,&b);
  //a b作为实参传递给指针变量n1,n2。n1和n2称为指向a,b的指针。
  //*n1和*n2为a,b的别名,对*n1和*n2的修改,相当于对a,b的修改
  printf("swapped a=%d b=%d",a,b);
  //结果a=20,b=10
  return 0;
}
/*用函数找到有序数组中的某个数*/
int binary_search(int arr[],int k,int sz)//本质上arr是一个指针
{
  //二分查找
  int left=0;
  int right=sz-1;
  while(left<=right)
  {
    int mid=(left+right)/2;//中间元素的下标
    if(arr[mid]<k)
      left=mid+1;
    else if(arr[mid]>k)
      right=mid-1;
    else
      return mid;//找到了就返回这个数
  }
  return -1;//找不到就返回-1
}
int main()
{
  int arr[]={0,1,2,3,4,5,6,7,8,9};
  int k=7;
  int sz=sizeof(arr)/sizeof(arr[0]);
  int ret = binary_search(arr,k,sz);
  //传递过去的实际上是arr数组首元素的地址
  //所以如果在binary_search中计算ret,所得结果为sz=1,不能正确计算
  if(ret ==-1)
    printf("找不到指定的数字\n");
  else
    printf("找到了,下标是:%d\n",ret);
}/*实现每次调用num值会加1*/
void ADD(int* p)
{
  (*p)++;//*p++的优先级比较高,会优先作用于p,没有用。
}
int main()
{
  int num=0;
    ADD(&num);
    printf("num=%d\n",num);//打印结果1
    ADD(&num);
    printf("num=%d\n",num);//打印结果2
    ADD(&num);
    printf("num=%d\n",num);//打印结果3
}函数的嵌套访问和链式调用
嵌套调用就是某个函数调用另外一个函数
链式调用就是把一个函数的返回值作为另一个函数的参数
/*函数的嵌套使用*/
int main()
{
   printf("%d\n",printf("%d",printf("%d",43)));//打印结果1
   return 0;
}
//打印结果4321,嵌套打印字符个数










