IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言跬步积累】——关键字(1)(typedef、static) -> 正文阅读

[C++知识库]【C语言跬步积累】——关键字(1)(typedef、static)

目录

前言:

实例:

?常见关键字:

一.typedef

1.定义

?2.使用

3.实例

?二.static

?1.定义

2.作用

(一)修饰局部变量

实例(未使用static进行修饰):

调试过程:

实例(使用static进行修饰):

调试过程:

小结:

(二).修饰全局变量

实例(为使用static进行修饰):

实例(使用static进行修饰):

?(三).修饰函数(和修饰全局变量差不多)

实例:


?

前言:

关键字是不能和变量名冲突的?

实例:

#include<stdio.h>
int main()
{
int float=0;
return 0;
}

该代码就是错误的,float是关键字,不能作为变量名来使用

?常见关键字:

auto? ? ? ? break? ? ? ? case? ? ? ? char? ? ? ? const? ? ? ? continue? ? ? ? default? ? ? ? do? ? ? ? double? ? else? ? ? ? enum? ? ? ? extern? ? ? ? float? ? ? ? for? ? ? ? goto? ? ? ? if? ? ? ? int? ? ? ? long? ? ? ? register? ? ? return? ? ? ? short? ? ? ? signed? ? ? ? sizeof? ? ? ? static? ? ? ? struct? ? ? ? switch? ? ? ? typedef? ? ? ? union? ? ? ? unsigned? ? ? ? void? ? ? ? volatile? ? ? ? while? ? ? ??

暂时先介绍下面几个,后续会有补充,另外关键字不建议背下来,之后自己敲代码敲多了就记得了,现在了解一下就行?

一.typedef

1.定义

typedef顾名思义是类型定义,可以理解为类型重命名

?2.使用

有些类型比较长,打字比较麻烦,就可以使用typedef将该类型重新取个名字,方便后续的使用

3.实例

#include<stdio.h>
int main()
{
typedef unsigned int u_int;//unsigned int是无符号的整型类型
u_int num1 = 66;
unsigned int num2 = 88;
return 0;
}

解释:?

?这里我们将比较长的unsignded?int通过typedef重新命名为u_int,使得后续使用时更加方便,num1和num2的类型是相同的,u_int只是unsignded?int的别名。【就比如有个人真名叫张三,但有人嫌这么叫不顺口,就给他取了个别名:小三,发现这样顺口多了,因此张三和小三是同一个人,只是不同的叫法而已】

?二.static

?1.定义

在C语言中,static是用来修饰变量和函数的

2.作用

(一)修饰局部变量

实例(未使用static进行修饰):

#include<stdio.h>
void test()
{
	int a = 1;
	a++;
	printf("a=%d\n", a);
}
int main()
{
	int i = 0;
	while (i < 5)
	{
		test();
		i++;
	}
	return 0;
}

?这段代码大家应该比较熟悉,主要由while循环语句和构造的新函数test组成

输出结果

?

解释

?首先先看main函数,新构造的函数先别管它,开始执行时i=0,因为i<5,所以进入while循环,进入循环时先遇到构造的函数test,然后test函数便会启动自身的功能:【定义一个局部变量a(进入作用域时生命周期开始,离开作用域时生命周期结束),并赋值为1,然后a++变成2,最后打印a=2,离开test函数。】刚刚这整个过程都是在test函数内进行的,离开后遇到i++,i变成1,又因为1<5,再一次进入while循环。进入循环时仍然先遇到test函数:【定义一个局部变量a并赋值为1,然后a++,变成2,再打印出来】,然后遇到i++,i变成2,2<5,继续进入循环,直到i=5时循环结束,因此会打印出5次a=2。

?如果不能理解我通过代码运行的步骤来进行讲解(注意观察最左边黄色箭头的位置和左下角监视窗口i的值,箭头的位置表示正在编译中,还未执行):

调试过程:

?第一步:代码首先进入main函数,此时还未执行到int i=0,因此无法获取i的值

?第二步

第三步:此时i因为小于5,进入while循环

?第四步

?第五步:经过test函数并不会影响i的值,只不过像是按下了test函数的启动按钮,使test函数生命周期开始,打印出a=2,然后离开test函数,生命周期结束

?第六步

?第七步:

第八步

第九步

第十步

第十一步:?

?以上便是大概的流程,之后的重复动作就不放上去了,此处的用意在于理解为什么会打印5个a=2

上面写了这么多的目的便是和下面的static做一个对比,能够更加清晰的认识static

实例(使用static进行修饰):

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void test()
{
	static int a = 1;//a是一个静态的局部变量
	a++;
	printf("a=%d\n", a);
}
int main()
{
	int i = 0;
	while (i < 5)
	{
		test();
		i++;
	}
	return 0;
}

输出结果:?

?解释

有static修饰之后,第一次进入test函数时,a打印出2,和一开始那段代码一样,如果没有static,那么离开test时,a的值便会销毁,当你下一个循环再一次进入test函数时,a仍然先是赋值为1,然后a++,变为2,然后打印a=2。但如果加了static,那么离开test函数时a的值不会被销毁,即下一次进入test函数时a是等于2,然后a++,a变为3,再打印a=3。可以简单理解为不加static,结束之后a就会喝孟婆汤,下一次再进入test时,a便会忘了之前是多少;加上static便不会喝孟婆汤,下一次进入test函数时还知道自己之前是多少,不会重新来过

为了方便大家理解,可以结合下面的图(我会跳过其他部分内容,只展示test函数内部的运行结果

此时第一次进入test函数,a=1?

调试过程:

?

?

?此时第二次进入test函数,a的值并不是1,而是继承了上一次的结果2?

?

?

?

?之后的结果就不展示了,感兴趣的可以自己动手操作一下

小结:

static修饰局部变量时,局部变量的生命周期变长。人话:可以继承,不会被消灭

(二).修饰全局变量

实例(为使用static进行修饰):

?

?输出结果

?全局变量只要在源文件内部,进行外部声明(extern-声明外部符号),便可以在其他文件中使用,但两个源文件的后缀名要相同

实例(使用static进行修饰):

?输出结果

?

?解释

static修饰全局变量,改变了变量的作用域,让静态的全局变量只能在自己所在源文件内部使用

?(三).修饰函数(和修饰全局变量差不多)

实例:

?图片有点问题第三行应该是:extern int add(int,int);//声明外部函数

?输出结果

对于该函数不了解的可以去我主页查找之前写的加法代码讲解 :http://t.csdn.cn/DtioS

?小结

  • static修饰函数也是改变了函数的作用域(该说法不准确,但易于理解)
  • 准确的说法应该是static修饰函数改变了函数的链接属性
  • 普通的函数具有外部链接属性
  • 被static修饰的函数的外部链接属性变成了内部链接属性

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 18:45:50  更:2022-08-19 18:47:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:36:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码