-
auto存储类:所有局部变量默认的存储类 ex:{int mount;auto int month} auto只用在函数内,只做局部变量
-
register 存储类:register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 '&' 运算符(因为它没有内存位置)。
- 循环控制机语句:
循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。C 提供了下列的控制语句
控制语句 | 描述 |
break语句 | 终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。 |
continue语句 | 引起循环跳过主体的剩余部分,立即重新开始测试条件。 |
goto语句 |
将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。 |
-
函数参数调用:
如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。
当调用函数时,有两种向函数传递参数的方式:
调用类型 | 描述 |
传值调用 | 该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。 |
引用调用 | 该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 |
默认情况下,C 使用传值调用来传递参数。一般来说,这意味着函数内的代码不能改变用于调用函数的实际参数。
-
传递数组给函数
如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。
方式一(形参是指针)
void myFunction(int *param) {……….}
方式二(形参是一个已定义大小的数组)
void myFunction(int param[10]) {……….}
方式三(形参是一个未定义大小的数组)
void myFunction(int param[]) {……….}
-
从函数返回数组
C 语言不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数,如下:
int * myFunction() {}
另外,C不支持在函数外返回局部变量的地址,除非定义局部变量为static变量
-
指针取数组地址
ex: {….int var[10],int *ptr;…..
ptr = var; /*指针数组地址*/
ptr = &var[10-1]; /*指针中最后一个元素的地址*/ }
-
字符串操作函数
函数 描述 strcopy(s1,s2) 复制字符串 s2 到字符串 s1的末尾 strcat(s1,s2) 连接字符串 s2 到字符串 s1的末尾 strlen(s1) 返回字符串s1的长度 strcmp(s1,s2) 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。 strchr(s1,ch) 返回一个指针,指向字符串s1中字符ch的第一次出现的位置 strstr(s1,s2) 返回一个指针,指向字符串s1中字符串s2的第一次出现的位置 -
结构体为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型 ex: -
struct Books
{
char title[50]; /*member define*/
char author[50]; /*member define*/char subject[100];/*member define*/
int book_id; /*member define*/
} book; /*实例*/指向结构体的指针:
struct book *struct_pointer;
struct_pointer = &book;
/*访问结构成员*/
struct_pointer –> title;
-
位域
有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有 0 和 1 两种状态,用 1 位二进位即可。为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,称为"位域"或"位段"。
所谓"位域"是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。
典型的实例:1、用 1 位二进位存放一个开关量时,只有 0 和 1 两种状态。
2、读取外部文件格式——可以读取非标准的文件格式。例如:9 位的整数。
- 位域的定义和位域变量的说明
形式: struct 位域结构名 {位域列表}
位域列表形式: 类型说明符 位域名:位域长度
ex:struct bs{int a:8;
int b:2}data
说明data为bs变量,共占两个字节;其中位域a占8位,位域b占2位,剩余6位空着。
注:
1、一个位域必须存储在同一个字节中,不能夸两个字节,如一个字节所剩空间不够存放另一位域时,应从下一单元起开始存放该位域。
2、由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。如果最大长度大于计算机的整数字长,一些编译器可能会允许域的内存重叠,另外一些编译器可能会把大于一个域的部分存储在下一个字中。
main(){ |