入门C语言——初识C语言(3)

一、引言
本系列文章主要内容主要是我对C语言的初步认识以及知识小结。

二、GET到的知识

  • 1、常见关键字
    • (1)typedef
    • (2)register
    • (3)static
    • (4)define定义的常量和宏
  • 2、指针
    • (1)内存的使用
    • (2)指针变量
  • 3、结构体

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
typedef unsigned int uint;
int main()
{
     
	unsigned int a = 0;// 这里unsigned int写起来比较麻烦,我们可以用typedef给它取个别名
	uint b = 0;
	return 0;
}

(2)register

<1>先来讲讲一般电脑存储空间类型
入门C语言——初识C语言(3)_第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语言)