马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Hello各人好,很高兴我们又见面了!
给生存添点passion,开始本日的编程之路!
这一篇我们来增补一下在之前篇目没讲到的知识,并联合一些码友的私信提问和我在编程中碰到的题目,做一些易错点或易混点的讲授。
1、储存期
在许多书上,对于储存器的讲授都非常啰嗦,这里我只管用最简短的话,带各人搞清楚这个东西
起首,什么是储存期?这里我们把变量都想象成有生命的,变量的生命期就叫储存期。
接下来我们看这两个概念:
(1)主动储存期
在函数中不利用static而界说出的变量,被赋予了主动储存期:在界说是赋予他生命,在到达该声明步调的末了,也就是大括号}时,该对象消散。
最常见的就是我们函数里的形参,跳出函数后,形参也随之消散了。
(2)静态储存期
在函数中利用static而界说出的变量,被赋予了静态储存期:实行main函数之前被创建出来,步调竣事后消散。
别的,利用auto和register界说的变量具有主动储存期,但是他俩已经很少很少用了,由于他们两个的利用在现在的编译器中险些没故意义。
下面我们来分析一下这串代码:- #include <stdio.h>
- int a = 0;
- void test(void)
- {
- static int b = 0;
- int c = 0;
- }
- int main()
- {
- int d = 0;
- test;
- return 0;
- }
复制代码 在这串代码中,变量a开始创建,然后进入main函数,创建变量d,接着进入test函数,创建变量b,c,然后出函数,变量c消散,然后return 0竣事步调,变量a,b,d消散。在这个步调中生命期a>d>b>c。
2、指针的初始化题目
我们先来看这串代码:- #define _CRT_SECURE_NO_WARNINGS 1
- #include <stdio.h>
- int main()
- {
- int *p = 5;
- printf("%d\n", p);
- return 0;
- }
复制代码 好我们运行代码,打印出来个5,希奇了我们之前不是说过指针必须指向一个地点吗?你这指向了一个数是怎么回事?能打印出来又是怎么回事?
起首,指针必须指向地点是没错的。这里能打印是由于编译器的题目,如果你把这串代码放到dev c++中实行,就会发现他根本无法运行!
这是报错缘故原由:无效整型指针转化为整型。
如果放到VS2022中,他固然能运行,但我们注意到他会发出一个告诫:
我们可以去网上查询这个报错代码:
也就是说,我们这种写法本身就是不安全的,只是这次运气比力好,打印的时间vs把指针范例逼迫转化为了int型,以是打印了出来。
总而言之,我想说的是这种写法是不安全的,只管能打印,但是不要如许写!
3、字符函数的运用
在上期字符函数的讲授时我并没有举例,但是这时间大概有的小搭档就碰到了这个题目:
比方说我们把1传入isalnum函数,他返回值是0!1是数字,他应该返回为真才对啊!
着实如许写的码友忽略了一个紧张的点,字符函数我们传入的应该是字符,他判定的应该是这个字符是不是数字!
正确写法:- #define _CRT_SECURE_NO_WARNINGS 1
- #include <stdio.h>
- #include<ctype.h>
- int main()
- {
- char p = '1';
- int a = isalnum(p);
- printf("%d", a);
- return 0;
- }
复制代码 4、EOF
EOF意为End of file。固然忘了从前出现过没有,但是照旧说一下哈。
着实在差异编译器中EOF值是不一样的,但常见的就是-1,-2这两个值。
至于到底怎么用呢?就请各位去编译器中动手实行实行吧!
好了,本日的内容就分享到这,喜欢的可以订阅我们的专栏:编程之路!感谢各人的支持!
|