C语言的复合语句(块)和带参数函数

203 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情

复合语句(块)

复合语句用花括号括起来的一条或多条语句,复合语句也称为块。比较下面两个程序:

  • 程序段一
index = 0;
while(index++<10)
sam=10*index+2;
printf("sam=%d\n",sam);
  • 程序段二
index=0;
while(index++<10)
{
sam=10*index+2;
printf("sam=%d\n",sam);
}

程序段一,while循环中只有一条赋值表达式语句。没有花括号,while语句从while这行运行下至一个分号。循环结束后,printf()函数只会被调用一次。

程序段二,花括号确保两条语句都是while循环的一部分,每执行一次循环就调用一次printf()函数。根据while语句的结构,整个复合语句被视为一条语句。

Snipaste_2022-08-14_21-28-36.png

带参数函数

举一个带参数的函数例子

#include <stdio.h>
void pound(int n);  //ANSI函数原型声明
int main(){
    int times=5;
    char ch ='!';  //ASCII码是33
    float f = 6.0f;
    pound(times);    //int类型的参数
    pound(ch);      //和pound((int)ch); 相同
    pound(f);        //和pound((int)f); 相同
    return 0;
}
void pound(int n)     //ANSI风格函数头
{                      //表明该函数接受一个int类型的参数
    while(n-->0)
    printf("#");
    printf("\n");
    }

运行结果

Snipaste_2022-08-14_21-45-46.png

首先,看程序的函数头:void pound(int n);

如果函数不接受任何参数,函数头的圆括号中应该写上关键字void。由于该函数接受一个int类型的参数,所以圆括号中包含一个int类型变量n的声明。参数名应遵循c语言的命名规则。

声明参数就创建了被称为形式参数的变量。该例中,形式参数是int类型的变量n。像printf(10)这样的函数调用会把10赋给n。在该程序中,调用pound(times)就是把times的值(5)赋给n。我们称函数调用传递的值为实际参数,就是常说的实参。所以,函数调用pound(10)把实际参数10传递给函数,然后该函数把10赋给形式参数(变量n)。也就是说,main()中的变量times的值被拷贝给pound()中新的变量n。