分支语句和循环语句以及函数初步

1.switch语句基本格式

switch(整型变量表达式)

{

case 常量1; 语句块1; break;    //常量要是整型常量,不能有变量

case 常量1; 语句块1; break;

......

default:语句;break;

}

当变量表达式所表达的值与其中一个case语句中的常量相符时,就执行case语句后面的程序,并依次去执行所有case语句中的程序,除非遇到break语句,跳出switch为止.
也就是说整个switch语句执行结束了,接着会去执行switch后面的代码.

(二义性):case标签必须是唯一常量,也就是说,不允许两个case具有相同的常量值.

(1) case 'a' + 'A' :printf("90~100\n"); break;
(2) case 'a' || 'A' :printf("90~100\n"); break;

(1)和(2)都不对,因为(1)相加变为97加65的值. 而(2)中’a’||'A’在编译时其值变成了1.
C语言中不允许经行嵌套定义,只允许进行嵌套调用.

2.形参和实参

**形式参数:**函数被调用时接收传递进来的数据.形参指函数名后括号中被定义的变量,只有函数被调用的过程中给予赋值(分配内存空间),函数执行后形式参数变量就自动释放了.
**实际参数:**函数在调用时给出的参数包含了实实在在的数据,所以称为实参.实参可以是常量,变量表达式或函数等.无论实参为何种类型,在函数调用时,它们都必须有明确的值,以便把这些值传递给形参.

3.函数调用机制

局部变量占用的内存是在程序执行过程中"动态"得建立和释放的,当任何一个函数调用发生时,都要做以下工作:
1)建立栈空间

2)保护现场:主调函数运行状态和返回地址入栈

3)被调函数中的局部变量分配空间,完成参数传递

4)执行被调函数函数体

5)释放被调函数中局部变量占用的栈空间

6)恢复现场:取主调函数运行状态及返回地址,释放栈空间

7)继续主调函数后续语句

程序运行会分配4个区:代码区、数据区、堆区、栈区.
当我们的程序被执行,我们会为进程分配4个空间,当主调函数执行之前,我们会把全局变量初始化到数据区.函数中的局部变量只有在函数被调用时才会分配栈帧,当函数调用结束,形参和局部变量就会被释放.

4.break语句与continue语句

**break语句:**只能用于循环语句和 switch语句中,用于从当前循环中跳出,转去执行循环语句之后的语句.
**continue语句:**只能用在循环语句中,用来终止本次循环.将程序执行到continue语句时,将跳过其后尚未执行的循环语句,开始下一次循环.下一次循环是否执行依然取决于循环条件的判断.
continue语句与switch语句的区别: continue语句结束的只是本次循环,而break结束的是整个循环.

5.go to语句

go to 语句与标号语句一起使用,标号语句指用标识符标识的语句,它控制程序从go to语句所在地方转移到标号语句处.

(一般不提倡用.go to语句,go to语句要尽可能向下跳,go to语句只能转移到主调函数的作用范围)

6.return语句

return用于结束函数的执行,返回调用者,如果是主函数,则返回至操作系统(终止程序的执行).

利用一个return语句可以将一个数据返回给调用者,通常当函数的返回类型为void时,return语句可以省略,如果使用,也仅仅作为函数或程序结束的标志.

**return与exit函数的区别:**在main函数中执行return语句是终止程序的一种方法,另一种方法为调用exit函数,此函数属于<stdlib.h>头文件中.

exit:(EXIT_SUCCESS); 表示正常终止

exie(EXIT_FAILURE); 表示异常终止 //二者都为定义在<stdlib.h>中的宏

exit:(EXIT_SUCCESS) 和 exie(EXIT_FAILURE) 的值分别为 0 和 1.

不同点:不管哪个函数调用exit都会导致程序终止,return语句仅当在main函数中调用时才会导致程序终止.

7.常量的类型

#include<stdio.h>
#include<stdlib.h>
#define ARSIZE 10         //宏常量
  const int arsize=10;    //常变量
  enum {LEN=10};         //枚举常量
int main ()
{
  int ar[10];
  int br[ARSIZE];     //宏
  int cr[arsize];
  int dr[LEN];
}

给局部变量加静态关键字可以将其放入数据区.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值