前言:
这是C语言基础入门篇的第三篇,也是这个系列的最后一篇,乃是对C语言剩余入门知识点进行一个简要的介绍。而在学习完这三篇博客之后,我们将进行下一个阶段的学习——学习并初步掌握C语言的进阶知识,希望我与诸位可以谐勉同进,美美与共!有言道:黾勉苦辛,朝乾夕惕,木槿昔年,浮生未歇。在接下来的博客中,加油向前吧!
1. 初识关键字
1.1 定义:
C语言关键字是C语言保留的词汇,用户不能将这些词汇作为标识符(变量名、函数名等)使用,也不能自己创建关键字。
关键字分为:
(1)数据类型关键字:主要包括基本数据类型(int, char, float, double等)以及复杂数据类型(struct, union, enum等)的声明和定义。
(2)流程控制关键字:主要包括条件判断(if, else, switch, case)以及循环结构(for, do, while, break, continue)等。
(3)存储类关键字:主要包括自动存储(auto)、寄存器存储(register)、静态存储(static)、外部存储(extern)和常量存储(const)等。
(4)其他关键字:主要包括返回值(return)、无(void)、联合(union)、枚举(enum)、短(short)、长(long)、签名(signed)、无符号(unsigned)、字符串(string)等。
下面对部分重要关键字进行介绍
1.2 介绍展示:
1. auto:自动创建,自动销毁的 - 自动变量
代码实例:
int main()
{
auto int a = 10;//等同于: int a = 10;
//auto一般省略
return 0;
}
2. extern:用来声明外部符号,如在同一个项目库中的全局变量可以通过extren声明后,在其他.c文件中使用
代码实例:
extern a;
int main()
{
printf("%d", a);
return 0;
}
3. register:寄存器关键字,建议变量的值存放在寄存器中,提高调用速度
代码实例:
int main()
{
register int num = 100;//建议num的值存放在寄存器中,提高调用速度
return 0;
}
4. signed:有符号的,unsigned:无符号的
5. static:静态的
用法:
(1)static修饰局部变量:改变了局部变量的生命周期(本质上是改变了变量的存储类型)
代码实例:
void test()
{
static int a = 1;//此时的a为静态变量,生命周期与全局变量相同
a++;
printf("%d", a);//2 3 4 5 6 7 8 9 10 11
}
int main()
{
int i = 0;
while (i < 10);
{
test();
i++;
}
return 0;
}
(2)static修饰全局变量,使的这个全局变量只能在自己所在的源文件(.c文件)内部可以使用,其他源文件不能使用,实质改变了全局变量的外部连接属性,变成了内部链接属性,令其他源文件无法链接到该变量
(3)static修饰函数,使的函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用,实质改变了函数的外部连接属性,变成了内部链接属性,令其他源文件无法链接到该函数
6. typedef:类型定义(类型重定义)将复杂类型简单化,赋予一个别名
代码实例:
typedef unsigned int u_int;//将复杂类型简单化,赋予一个别名
int main()
{
unsigned int num = 100;
u_int num2 = 100;
return 0;
}
1.3 拓展:
define与include属于预处理指令,不是关键字
现在简要介绍define的用法:
1. define定义符号(常量)
代码实例:
#define MAX 1000
int main()
{
printf("%d\n", MAX);
return 0;
}
2. define定义宏
代码实例:
#define ADD1(X, Y) X+Y//错误定义
#define ADD2(X, Y) ((X)+(Y))//正确定义
int main()
{
printf("%d\n", 4*ADD1(2, 3));//结果为11,宏是完成替换的
//4*2+3 = 11
printf("%d\n", 4*ADD2(2, 3));//20
return 0;
}
2. 初识指针
2.1 定义:
在C语言中,指针是一个非常重要的概念。指针是一个变量,其值为另一个变量的地址。使用指针,可以间接地引用或者修改其指向的变量。
2.2 代码及详细介绍分析:
int main()
{
int a = 10;//a在内存中要分配空间的 - 4个字节
printf("%p\n", &a);//只会拿出第一个地址 %p 专门用来打印地址的
int * pa = &a;//pa是用来存放地址的,在C语言中pa叫是指针变量
//* 说明pa是指针变量
//int 说明pa指向的变量(即a)是int类型的
char ch = 'w';
char* pc = &ch;
*pa = 20;//* 解引用操作符 *pa就是通过pa里的地址,找到a;
printf("%d\n", a);//20
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(short*));
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(long*));
printf("%d\n", sizeof(long long*));
printf("%d\n", sizeof(float*));
printf("%d\n", sizeof(double*));
//都是4(字节)
//指针的大小是相同的,指针是用来存放地址的,指针需要多大空间取决于地址需要多大空间(平台位数)
//32位 32bit - 4byte
//64位 64bit - 8byte
return 0;
}
3. 初识结构体:
3.1 定义:
在C语言中,结构体(struct)是一种构造类型,它可以将不同的数据类型组合在一起形成一个新的数据类型,这种新的数据类型就是结构体。
3.2 用法及代码实例
1. 定义和声明结构体的同时创建变量:
代码实例:
struct Student
{
char name[20];
int age;
float score;
} stu; // 创建了一个名为stu的结构体变量
2. 先定义结构体,然后声明变量:
代码实例:
struct Student
{
char name[20];
int age;
float score;
};
struct Student stu; // 创建了一个名为stu的结构体变量
3. 使用指针访问结构体成员:
代码实例:
struct Student
{
char name[20];
int age;
float score;
};
struct Student stu = {"Tom", 18, 90.5f};
struct Student *p = &stu;
printf("%s\n", (*p).name); // 使用指针访问结构体成员
printf("%s\n", p->name); // 另一种访问结构体成员的方式
至此,C语言基础入门篇的内容就介绍完毕了,让我们在后面的博客中,努力成为C语言高手吧!