初识C语言(3)——关键字、#define定义标识符常量和宏

作者:云小逸
个人主页:[云小逸的主页]
码云:云小逸 (YunXiaoYi003)
motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。希望春天来之前,我们一起面朝大海,春暖花开!
专栏:C语言初阶日常杂记

# 前言
今天我们接着上一次的初识C语言(2),继续讲初识C语言(3)。首先先写上几句话:献给坚持创作的我和点开这篇文章希望进步的你:

>1.自己选择的方向与路途,就不要抱怨,一个人只有承担起狂风暴雨,才能最终守得住彩虹满天。
>2.换个角度看问题,结果可能就会大不一样,毛毛虫所谓的世界末日,恰恰就是蝴蝶破茧而出的美好时光。
>3.这个世界有时候会让人觉得很累,很辛苦,但是请相信,生活是有弹性的,别轻易认输,前路尽头,一定有光。

十一、关键字

1.typedef——类型定义,只能针对类型

typedef unsigned int unit//等价于unit=unsigned int
typedef struct Node
{   ……;
    ……;
}Node;//等价于Node=struct Node

2.static

static 一般用于修饰局部变量,全局变量,函数;

(1)static修饰局部变量:

#include
void test()
{
	int a = 1;
	a++;
	printf("%d   ", a);
}
int main(void)
{
	int i = 0;
	while (i <= 10)
	{
		test();
		i++;
	}
	return 0;
}

此时结果为2 2 2 2 2 2 2 2 2 2   

将int a=1;改为static int a=1; 后: 

结果为2 3 4 5 6 7 8 9 10

是因为改为static int a=1;后,出了作用域,不会销毁a的值,想要理解其本质,首先先看一下这个图:

初识C语言(3)——关键字、#define定义标识符常量和宏_第1张图片

static修饰局部变量时,会影响局部变量的生命周期,本质上改变了局部变量的存储位置,生命周期变长,为整个周期。静态局部变量存储于进程中的全局数据区。

初识C语言(3)——关键字、#define定义标识符常量和宏_第2张图片

初识C语言(3)——关键字、#define定义标识符常量和宏_第3张图片

(2).static修饰全局变量

首先我们要知道全局变量的属性:全局变量具有外部链接属性。而static修饰全局变量时,这个全局变量的外部链接属性变为内部链接属性,是其他源文件(.c)文件就可以再使用这个全局变量了。则使用时我们会感觉到该全局变量作用域变小。 

初识C语言(3)——关键字、#define定义标识符常量和宏_第4张图片

初识C语言(3)——关键字、#define定义标识符常量和宏_第5张图片

(3).static修饰函数

此类情况类似于static修饰全局变量。函数同样具有外部属性。而static修饰函数时,这个函数的外部链接属性变为内部链接属性,是其他源文件(.c)文件就可以再使用这个函数了。则使用时我们会感觉到该函数作用域变小。

初识C语言(3)——关键字、#define定义标识符常量和宏_第6张图片

初识C语言(3)——关键字、#define定义标识符常量和宏_第7张图片

总结:

static修饰变量

   a. 函数中局部变量

      声明周期延长:该变量不随函数结束而结束

      初始化:只在第一次调用该函数时进行初始化

      记忆性:后序调用时,该变量使用前一次函数调用完成之后保存的值

      存储位置:不会存储在栈上,放在数据段

   b. 全局变量

     改变该变量的链接属性,让该变量具有文件作用域,即只能在当前文件中使用

   c. 修饰变量时,没有被初始化时会被自动初始化为0

  2. static修饰函数

   改变该函数的链接属性,让该函数具有文件作用域,即只能在当前文件中使用

 

3. register——寄存器

register int num=3;//建议将num存放在寄存器上

为了便于你理解register的作用,请看这个图: 

 初识C语言(3)——关键字、#define定义标识符常量和宏_第8张图片

十二.#define定义标识符常量和宏

1#define:

#define a 10其中a不定类型,可整数,浮点数,字符串,但此后不可以在a=100赋值 

 2.宏:

#define ADD(x,y) ((x)+(y))

初识C语言(3)——关键字、#define定义标识符常量和宏_第9张图片

在main函数中引用是这样的:

int c=ADD(a,b);//等价于 int c=((a)+(b))

最后十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

1.每个人的际遇不同,成功总有早晚,但肯定离不开两样东西,一是努力,二是格局。

2.不知道是越来越独立 ,还是越来越心虚, 走了这么久, 发现唯一靠得住的还是自己,只有你把自己变好了,你足够强大了,才不会在意他人。

3.今天你不用力走,明天就要用力跑。如果无法避免,那我们能做的,不过只是把自己变得更强大,强大到能够应对下一场挑战。 

 最后如果觉得我写的还不错,请不要忘记点赞,收藏,加关注哦(。・ω・。)

你可能感兴趣的:(C语言初阶,c语言)