c语言入门(七)函数

sizeof()运算符,变量所占空间的字节数
 char a[]={"nihao};
printf("%ld\n",sizeof(a));

结果为:6
(C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。)
定义
形参/实参
数组作为参数
函数嵌套
函数递归
定义:
返回值类型 函数名(形式参数){
声明语句
}  声明,定义,参数
无参函数举例
void hell0()//无参数 无返回值
{
printf(“hello,word”);
}
int peopleCount()//无参数 有返回值
{
return 33;
int max(int a, int b)//有参数,有返回值
{
return a>b?a:b;
}
void printNumber(int x)//有参数 无返回值
{
printf(“number is %d”,x);
}
注意事项:
返回值类型:函数的结果值类型,函数不能返回数组,没有其他的限制.指定返回类型是void类型说明函数没有返回值.
函数名命名规范和变量名命名规范一样.
每个形式参数的前面说明其类型,即使几个参数具有相同的数据类型,也必须对每个形式参数分别进行类型说明.形式参数用逗号进行分隔,就算没有参数函数后面的()也不能省略,可以写成().
返回值
函数的返回值称为函数的值,只能通过return语句返回给主调函数.
一个函数只能有一个返回值.
函数即使没有返回值,也可以使用return来结束函数的执行,回到主调函数.
return后面的语句不再执行
函数调用
函数调用有函数名和....
函数的声明:
函数包括:函数声明,函数定义,函数调用
函数声明:
1函数定义在调用该函数的函数之前,就不用对该函数声明
2如果函数定义在调用该函数的函数之后,必须在调用该函数的函数之前对其声明
函数的声明尽管可以省略,从规范上讲,不要省略

implementation实现

函数声明一般写在头文件里,xx.h头文件
函数定义一般写在实现文件里(源文件),xx.m
形参,实参
函数调用中,形参会拷贝实参内容,传递参数是给函数传递信息的一种方式
形式参数:出现在函数定义中,以假名字来表示函数调用时需要提供的值 .(形式参数的作用是提前占位,同时可以提高函数的同用性,而实际参数是真实数据,出现在函数调用时的表达式中,在程序跳转执行函数内部代码时,形参会拷贝实参的内容)
实际参数:穿线在函数调用中的表达式.
注意事项:
实参传递给形参,是单向的值传递,是拷贝的过程


函数的嵌套调用
c语言不允许函数嵌套定义,但是允许函数嵌套调用
注意避免潜逃定义

数组作为函数参数:
数组元素作为参数,与普通变量作为参数一样,单行的值传递.
数组作为参数,把数组名作为实参传入,数组名是数组的首地址;
数组名作为参数时,形参和实参实际上是同一段内存空间.

     printArray(array,10);
   
 //bubbleSort(array,10);//排序
   
 //printArray(array,10);
   
 printf("%d\n",minNumber3(array[0],array[1],array[2],array[3],array[4]));
   
 int s=function(5);
   
 printf("s=%d",s);
   
 //数组作为参数时,是将数组名作为实参,同时在函数执行其内部代码时,形参拷贝的数组名是指向的同一个内存空间(数组的内存空间)


函数嵌套调用,(主调函数调用其他函数)

递归函数(自己调用自己)
递归一定要有出口
c语言允许函数实现体内再次调用函数本身.这种调用方式称为递归调用,这个函数称为递归函数
计算机中阶乘用递归
变量的作用域
所谓变量的作用域指的是变量的有效范围.
定义在不同的位置,变量的作用域是不同的.
外部变量(全局变量):文件作用域,从变量被声明的点开始,一直到躲在文件的末尾.跟随在外部变量声明之后的所有函数都可以访问.
局部变量:块作用域,从变量被声明的店开始一直到第一个大括号的结尾处.
注意:
外部变量和局部变量可以重名,但是在局部变量作用域内只能访问局部变量.
作业:
1:数组,参数,名,长度,for循环,主调函数有内容
长度,形参,二维数组
二维数组打印输出
4:字符串为整天
1.数组操作。
(1)写一个函数,实现给数组中的元素随机赋值。
(2)写一个函数,实现给数组排序,升序序列。
(3)写一个函数,实现将数组元素输出。
 
2.自己实现strcpy以及strlen, strcat函数。
 
3、从控制台输入一个整数,实现将该整数逆序输出以及正序输出。
比如输入:54321,  正序输出就是54321, 逆序输出就是12345
提示:使用递归。
 
4.写一个函数,实现将tom is cat反向打印成 cat  is tom。
void nxPrint(char str[])
{
    long flag = strlen(str);
    long m = strlen(str);
    for (long i = m-1; i >= 0; i--) {
        if (str[i] != ' ')
        {
            flag --;
        }
        else
        {
            for ( long j = flag; j < m; j++)
            {
                printf("%c",str[j]);
            }
            printf(" ");
            flag --;
            m = flag;
        }
    }
    for (unsigned long j = 0; j < m; j++)
    {
        printf("%c",str[j]);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值