入门C语言——初识C语言
Posted 温蒂不吃糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门C语言——初识C语言相关的知识,希望对你有一定的参考价值。
一、引言
本系列文章主要内容主要是我对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;// 这里unsigned int写起来比较麻烦,我们可以用typedef给它取个别名
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!
以上是关于入门C语言——初识C语言的主要内容,如果未能解决你的问题,请参考以下文章