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

本文介绍了C语言的基础知识,包括typedef用于类型重定义,register建议编译器使用寄存器存储变量,static改变局部变量生命周期,以及define定义常量和宏。还讲解了指针的概念,如何使用指针变量访问内存,以及结构体在描述复杂数据类型的应用。最后通过示例展示了结构体的声明和使用。
摘要由CSDN通过智能技术生成

一、引言
本系列文章主要内容主要是我对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循环
gotogoto语句
if用于if else语句
register略,详见下文
return返回,用于函数
signed有符号的,应用于正负数
sizeof计算类型所占内存大小
static略,详见下文
struct结构体关键字
switchswitch语句
typedef类型重定义,详见下文
union联合体关键字
unsigned无符号的
void空类型
volatile易变的
whilewhile语句

下面介绍部分关键字:

(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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值