首页 > 其他分享 >C语言语法(复习专用)

C语言语法(复习专用)

时间:2023-10-26 18:22:58浏览次数:36  
标签:存储 函数 静态 局部变量 C语言 语法 全局变量 变量 复习

普通分隔符:

分号「 ; 」:语句结尾

大括号「 { } 」:函数体,复合语句以及数组的初始化等;

圆括号「 () 」:函数定义时用来括住参数,或者用来修改运算顺序,

比如:(a + 1) 2 和 a + (1 2)

方括号「 [] 」定义数组类型和应用元素,比如: int a10; b = a3;

点号「 . 」:结构体仲引用成员

逗号「 , :参数分隔,比如:int a,b,c;

注释符: // 单行注释, /**/多行注释

 

局部变量

(1)在函数的开头定义的变量
(2) 在函数内的复合语句内定义的变量
(3)形式参数

在一个函数内部定义的变量只在本函数范围内有效,也就是只有本函数内才能引用它们,在此函数外不能使用这些变量;

在复合语句内定义的变量只能在本复合语句范围内有效,只有本复合语句内才能引用他们,在该复合语句外不能使用这些变量;

还有就是函数的形参,只在该函数内有效;

这三种情况下出现的变量就是局部变量

 

全局变量

一个源文件中可以包含若干个函数,在函数外部定义的变量就是全局变量或外部变量;全局变量为该源文件中所有函数所共有,它的作用范围是从变量定义的位置到源文件结束

 

需要特别说明:

全局变量在程序的整个执行过程中都占据着内存单元,而不是仅仅在使用时才开辟存储单元;
设置全局变量的目的是为了增加函数间数据联系的渠道,由于同一个源文件中的所有函数都可以引用全局变量,所以在任意函数中改变全局变量的值,这就会影响到其他函数中全局变量的值,也就是说所有函数中的同一全局变量占用同一块地址;
为了区别局部变量和全局变量,通常将全局变量的第一个字母用大写表示;

 

动态存储区中存放以下数据:

1)函数形式参数,在调用函数时给形参分配存储空间

2)函数中没由用关键字 static 声明的变量,即自动变量

3)函数调用时的现场保护和返回地址等

对以上数据,在函数调用开始时分配动态存储空间,函数结束时释放这些空间;

在C语言中,每一个变量和函数都有两个属性:数据类型和数据的存储类别 ;对于数据类型,我们比较熟悉,而对于存储类别指的是数据在内存中的存储方式,如动态存储和静态存储;

C语言中的存储类别包括4种:自动的(auto) 、静态的(static)、寄存器的(extern)、外部的(extern);根据变量的存储类别,可以知道变量的作用域和生存期;

 

1.自动变量(auto)

 函数中的局部变量,如果不专门声明为 static 存储类别,都是动态地分配存储空间,数据存储在动态存储区中;

2.静态局部变量(static局部变量)

有时希望函数中的局部变量的值在函数调用结束后不消失而继续保持,即其占用的存储单元不变,在下一次调用该函数时该变量已有值(即上一次函数调用结束时的值),这时就该指定该局部变量为 静态局部变量,用关键字 static 进行声明

 

注意:

1)静态局部变量属于静态存储类别,在静态存储区内分配内存单元,在整个程序运行期间都不释放;

2)对于静态局部变量时在编译时赋初值的,并且只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而是保留上次函数调用后结束的值;对于自动变量,它赋初值是在函数调用时进行的,而不是在编译时进行,所以上面的 b= 0语句在每次调用函数时都会执行;

3)如果在定义局部变量时不赋初值的话,对于静态局部变量来说,编译时自动赋初值0(对于数值型变量)或空字符'\0'(对于字符变量);而对于自动变量来说,它的值是一个不确定的值;

4)虽然静态局部变量在函数调用结束后任然存在,但是其他函数是不能引用它的,因为说到底它还是一个局部变量,作用范围仅限于本函数;

5)由于静态局部变量要长期占用内存,而且降低了程序的可读性,因此谨慎使用;

 

从嵌套循环跳出:

1 :接力   break;   下一位置处写  if()break;  

2 :goto    out;    最终位置  out:(out :是一个标号,标注了一个地方,一旦成立,跳到目的地)

 

————————————————
版权声明:本文为CSDN博主「bleauchat」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bleauchat/article/details/119429254

 

标签:存储,函数,静态,局部变量,C语言,语法,全局变量,变量,复习
From: https://www.cnblogs.com/2874147746lijiacheng/p/17790060.html

相关文章