欢迎来到 Claffic 的博客 💞💞💞 👉 专栏:《C生万物 | 先来学C》👈
前言:
上期向大家介绍了 字符串,转义字符,注释,两种语句,函数,数组,操作符 等知识,这篇博客继续带大家初识C语言,我们开始吧!
目录
❤️11.常见关键字
11.常见关键字
常见关键词一览~
先不要紧张,关键字很友好哒,先看看它们的样子吧~
下面把其中两个挑出来讲解:
11.1 typedef
typedef 即 type-define ,类型定义,理解为类型重命名。
可以看到,这里我把 int 重命名为 zhx ,num1 和 num2 是同一种类型。
11.2 static
在C语言中:
static 是用来修饰变量和函数的
11.2.1修饰局部变量
尝试看下面两段代码:
//代码1
#include <stdio.h>
void test()
{
int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
test();
}
return 0;
}
//代码2
#include <stdio.h>
void test()
{
//static修饰局部变量
static int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
test();
}
return 0;
}
代码1结果:
1 1 1 1 1 1 1 1 1 1
代码2结果:
1 2 3 4 5 6 7 8 9 10
原因就是 static 修饰的变量 i 不可被修改,积累了++;
结论:
static修饰局部变量改变了变量的生命周期
让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束
11.2.2修饰全局变量
main 函数外直接定义变量,称为全局变量。
看两段代码:
//代码1
include<stdio.h>
//add.c文件中:
int g_val = 2023;
//test.c文件中:
int main()
{
printf("%d\n", g_val);
return 0;
}
//代码2
#include<stdio.h>
//add.c文件中:
static int g_val = 2022;
//test.c文件中:
int main()
{
printf("%d\n", g_val);
return 0;
}
代码1可以正常编译,代码 2 编译异常,出现连接性错误。
原因是代码 2 中 static 修饰的变量只可以在 add.c 这一个文件中使用,这也是 static 的魅力所在。
结论:
一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。
11.2.3 修饰函数
类似于修饰全局变量,直接看结论:
结论:
一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。
12. #define 定义常量和宏
//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
比函数简易些
#include<stdio.h>
int main()
{
int sum = ADD(2, 3);
printf("sum = %d\n", sum);
sum = 10*ADD(2, 3);
printf("sum = %d\n", sum);
return 0;
}
定义后可以像这样直接使用
13.指针
13.1内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
可以把内存看成小房子,房子的门牌号就是指针;
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。
如何取出变量的地址呢?
这里用到了操作符 &
#include <stdio.h>
int main()
{
int num = 10;
#//取出num的地址
//注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
printf("%p\n", &num);//打印地址,%p是以地址的形式打印
return 0;
}
如何储存地址呢?
需要定义指针变量,就是储存指针的变量
int num = 10;
int *p;//p为一个整形指针变量
p = #
用指针修改变量:
#include <stdio.h>
int main()
{
int num = 10;
int *p = #
*p = 20;//解引用操作,通过指针访问并修改变量
return 0;
}
以上举例只是整形指针,可以推广到其他指针类型:
char arr = 'y';
char*ap = &arr;
float i = 3.14;
float*ip = &i;
其实就是在类型后面加 *
13.2指针变量的大小
幸运的是,我们可以直接用 sizeof 来计算指针变量的大小
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));
return 0;
}
结论:
指针变量的大小取决于地址的大小
32位平台下地址是32个bit位(即4个字节)
64位平台下地址是64个bit位(即8个字节)
14.结构体
什么是结构体?
简单来讲,就是具有多个特征的个体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
就比如描述一个学生,需要 名字,年龄,性别,学号 这几个特征:
struct Stu
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[15]; //学号
};
以上就是结构体的简介和创建。
总结:
到这里 初始C语言 就完结啦,相信你已经收获满满,后期就要开始详细的讲解每个知识点啦 ~ 是不是期待呢?如果有问题可以直接在评论区留言或者私信哦 ~ 我会一一回应哒!
码文不易
如果你觉得这篇文章还不错并且对你有帮助,不妨支持一波哦 💗💗💗