一、引言 本系列文章主要内容主要是我对C语言的初步认识以及知识小结。
1、常见关键字
关键字 | 功能 |
---|
auto | 创建自动变量,一般省略 | break | 停止、中断,一般用于switch语句和循环 | case | 用于switch语句 | char | 字符 | int | 整型 | float | 浮点数 | long | 长整型 | short | 短整型 | double | 双精度浮点数 | const | 赋予变量常属性 | continue | 继续,用于循环,switch语句不适用 | default | 用于switch语句 | do | 用于do while语句 | else | 用于if else语句 | enum | 用于枚举 | extern | 用于声明外部符号 | for | 用于for循环 | goto | goto语句 | if | 用于if else语句 | register | 略,详见下文 | return | 返回,用于函数 | signed | 有符号的,应用于正负数 | sizeof | 计算类型所占内存大小 | static | 略,详见下文 | struct | 结构体关键字 | switch | switch语句 | typedef | 类型重定义,详见下文 | union | 联合体关键字 | unsigned | 无符号的 | void | 空类型 | volatile | 易变的 | while | while语句 |
下面介绍部分关键字:
(1)typedef
用于类型重定义,相当于给某类型组合起外号,为了以后使用起来更方便。 示例:
#include<stdio.h>
typedef unsigned int uint;
int main()
{
unsigned int a = 0;
uint b = 0;
return 0;
}
(2)register
<1>先来讲讲一般电脑存储空间类型 一般情况下在电脑中越精密的储存器储存空间越少,性能越强,成本更高。 电脑中寄存器一般有几十个,每个寄存器有数个字节;高速缓存约几百兆;内存8g,16g等;硬盘512g等。 由于早期cpu处理速度和内存的读写速度比较匹配,故cpu处理数据时是直接从内存中拿的。但是后来cpu处理速度飞速提升,远超内存读写速度,因此出现了寄存器和高速缓存等单元,这些储存器有着更高的读写速度,可以匹配cpu的处理速度。 <2>在c语言中我们可以使用类似 regisiter int a = 10 ;的形式建议编译器将a的值放入寄存器中,但是是否存入寄存器取决于编译器自身。 <3>寄存器和内存的空间是独立的,因此若a的值被存入寄存器中,那么&a这种访问a内存的操作就会报错了。
(3)static
<1>static可以改变局部变量的生命周期,但是不能改变局部变量的作用域。 <2>static修饰全局变量(函数)时,会将变(函数)量的外部链接属性改为内部链接属性,即该变量(函数)只能在该源文件内部使用,其他源文件无法链接到,也无法使用。
(4)define定义的常量和宏
<1>定义变量,例如:#define NUM 1000 <2>定义宏,例如求较大值:#define MAX(x,y) (x>y?x;y)
2、指针
(1)内存的使用
电脑分为32位和64位,分别有32根和64根地址线。每根地址线在通电和不通电时可以表示1,0。地址线通过不同的通电状态形成不同的地址,由此地址指向其分配的内存单元。 以32位操作系统为例,初始状态为 00000000000000000000000000000000 那么就可以有2^32个地址,经过规定每个内存单元大小位1字节。
(2)指针变量
指针变量是存放地址的变量。 指针变量的大小与其指向的数据类型无关,32位平台上大小为4字节,64位平台上位8字节。 由于指针变量存放的是一个地址,因此可以同过对指针变量解引用来访问该地址,对其进行操作
int main()
{
int a = 10;
printf("%d ", a);
int *pa = &a;
*pa = 20;
printf("%d ", a);
return 0;
}
指针变量pa向内存申请内存后将a的地址存入,之后通过对pa解引用访问到pa指向的内存空间,从而将a的值改为20。
3、结构体
结构体可以描述复杂类型的数据。例如:
struct student
{
char name[20];
int age;
char sex[10];
char id[20];
};
int main()
{
struct student s1 = { "xiaoming",18,"men","20200123" };
printf("%s %d %s %s", s1.name,s1.age ,s1.sex ,s1.id );
return 0;
}
通过创建结构体来描述一个学生的基本信息。 我们还可以通过创建结构体指针来访问结构体。
struct student * ps = &s1;
printf("%s %d %s %s", (*ps).name, (*ps).age, (*ps).sex, (*ps).id);
或者可以通过->来打印结构体
printf("%s %d %s %s", ps->name, ps->age, ps->sex, ps->id);
三、结语 至此,C语言的简单大致学习就结束了,接下来是更加系统全面地学习C语言。ByeBye!
|