函数不写返回值时候,默认返回类型是int
二分查找函数
找到返回下标,找不到返回-1
int binary_search(int arr[],int k,int sz)
{
int left = 0;
int right = sz-1;
while (left<=right)
{
int mid = left+(right-left) / 2; //防止溢出
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[1]);//这句话不能写进函数里面,否则在函数中他只是个指针变量,是数组首元素的地址,sz=1
int ret = binary_search(arr,k,sz);
if (ret == -1)
{
printf("not found");
}
else
{
printf("found it, place:%d", ret);
}
return 0;
}
写一个函数,每调用一次num就会+1
int add(int n)
{
return n+1; //不能写n++
}
int main()
{
int num = 0;
num=add(num);
printf("%d\n", num);
num=add(num);
printf("%d\n", num);
return 0;
}
链式访问
int len=strlen("abcdef");
printf("%d\n", len);
printf("%d\n", strlen("abcdef"); //链式访问
printf("%d\n",printf("%d",printf("%d",43))); //输出4321
// 查阅MSDN中的Return Value
// 得知Each of these functions returns the number of characters printed, or a negative value if an error occurs.
以下可以明确地说明main函数不需要参数
int main(void)
{
本质上main函数有3个参数
int main(int argc,char*argv[],char*envp[])