今天学习内容如下
1.整型数组二分查找元素下标
2.函数的链式访问
函数的返回值可以作为实参写在其他函数
printf("%d",strlen("abc"));
//strlen函数返回值是无符号整形,作为实参可以用
printf函数也有返回值,返回值是打印的字符的数量,函数参数的执行方向是从右到左
printf("%d",printf("%d",printf("%d",43) ));
//结果为4321
如果函数是void类型,无返回值,那么会编译报错
3.函数不写返回值的时候,默认返回值是int类型,不建议这么写
4.如果写了返回类型,一定要记得写返回值,否则默认返回函数内部最后一条指令
int add()
{
printf("呵呵");
}
//忘写返回值,则返回2,两个字符
5.函数里面没有形参的话,写一个实参过去,也不会报错,能通过但没一点用
如果不想要实参,也可以在形参里面写void,可以让编译器报错
void add()
{
}
add(); //正常情况
add(100); //强行传一个实参,编译器能通过,但没用
void add(void) //里面加一个void,可让编译器不通过
6.main主函数也是有参数的,3个参数
int main(int argc,char* argv[],char* envp[]) 目前知道了解即可
7.函数的声明,函数int add(int,int); 写出类型即可,不用写变量
8.函数声明一般写在头文件,源文件到时候直接包含include头文件即可
别人想要这个函数,只需要包含头文件就行了,不用管函数定义在哪个文件
9.源文件编译成静态库想要使用需要写#pragma comment(lib," ")
10.函数递归大大减少了代码量,大事化小
11.unsigned int ,用scanf或者输出时要用 %u
12.函数的递归调用
//按顺序打印12345 设i=12345传进函数
void pri(int i)
{
if(i>9)
pri(i/10);
printf("%d",i%10);
}
//先执行函数递归,执行完,再原路返回,倒着输出printf