c语言函数

c语言之函数

一、两种传递方式

在这里插入图片描述

//值传递方式
void swap (int a, int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

int main()
{
    int x = 7, y = 11;
    printf ("before swapped: ");
    printf ("x=%d, y=%d\n", x, y);
    swap (x, y);
    printf ("after  swapped: ");
    printf ("x=%d, y=%d\n", x, y);
    
}
//before swapped: x=7, y=11
//after  swapped: x=7, y=11

在这里插入图片描述

//值传递方式(数组指针)
void mergestr (char s1[ ], char s2[ ], char s3[ ])
{
    int i, j;
    for (i = 0; s1[i] != '\0'; i++)  //将s1复制到s3中
        s3[i] = s1[i];
    for (j = 0; s2[j] != '\0'; j++)  //将s2复制到s3的后边
        s3[i+j] = s2[j];
    s3[i+j] = '\0';            //置字符串结束标志
}

int main()
{
    char str1[ ] = {"Hello "};
    char str2[ ] = {"china!"};
    char str3[40];
    mergestr (str1, str2, str3);
    printf ("%s\n", str3);
}
//Hello china!
二、 变量的储存类型

auto---------自动型(函数内或复合语句中定义,不可定义在函数外)
register-----寄存器型(动态储存类型)
static -------静态型(局部和全局)
extern-------外部型(外部变量和全局变量是对同一类变量的两种不同角度的提法。全局变是是从它的作用域提出的,外部变量从它的存储方式提出的,表示了它的生存期。它属于静态存储类型。 )

静态局部变量与自动变量
静态局部变量赋值一次,自动变量赋初值可能多次。静态局部变量若在定义时未赋值,则系统自动赋值为0,也属于局部变量,作用域与局部变量一致,但生存周期为整个源程序。

void func ( )    //函数定义
{
    auto int j = 0;//多次赋值,对上一次运算不储存运算结果
    ++j;
    printf ("%d ", j);
}

int main()
{
    int i;
    void func ( );  //函数说明
    for (i = 1; i <= 5; i++)
        func ( );    //函数调用
}
//1 1 1 1 1
//若auto换成static 1 2 3 4 5

全局变量(外部变量)的说明之前再冠以static就构成了静态全局变量。
静态全局变量只在定义该变量的源文件内有效。

三、函数的嵌套和递归
//递归
void print (int w)   //递归函数
{
    int  i;
    if ( w != 0)     //递归结束条件
    {
        print (w-1);//递归,直到W!=0;
        for (i = 1; i <= w; ++i)
            printf ("%d ", w);
        printf ("\n");
    }
}

int main()
{
    print ( 3 );
}
//1 
//2 2 
//3 3 3 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值