|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 鱼C-小师妹 于 2021-10-27 11:16 编辑
在线讲解:
关注小师妹的童鞋们都应该知道,本仙女是“手写”代码狂人~
其实除了手写代码,本人还爱好刷题,哈哈哈哈哈哈哈,越来越秃,不对,越来越强!
论坛上的百题集(传送门)和课后作业(传送门),利扣,各大厂面试题等等资源,小师妹做了很多,也整理了很多资料,想要的扣1,超过 100 条,到时视频下方激活传送门!
接下来小师妹就从我的刷题小本本中,找到 6 道很基础,很面试,很坑人的东东~
有言在先:
- 全部不会,赶紧回炉重造小甲鱼老师的 C 语言教程
- 全会并答对,恭喜你,水平很棒!
- 1-2道不会,看答案就会懂
- 3-4道不会,看答案,不懂得赶紧去看对应的教程
好啦,能看到的这里的童鞋,就不要走啦!
不要打开编译器,全靠自己脑算或者手算出结果哦~
关门!放题!
第 1 关:printf() 的参数
下面的代码输出结果:
- #include <stdio.h>
- int main()
- {
- int a = 1, b = 2, c = 3; printf("\n %d - %d - %d \n", a+b+c, (b = b*2), (c = c*2));
- return 0;
- }
复制代码
答案:
这一关就是考验你是否知道 C 语言里函数的参数默认是从右往左处理的,输出时是从左往右。
第 2 关:main() 的返回类型
下面这段代码可以顺利编译吗:
- #include<stdio.h>
- void main(void)
- {
- char *ptr = (char*)malloc(10);
- if(NULL == ptr)
- {
- printf("\n Malloc failed \n");
- return;
- }
- else
- {
- // Do some processing
- free(ptr);
- }
- return;
- }
复制代码
答案:
第 3 关:gets()
找出下面代码中的问题:
- #include<stdio.h>
- int main(void)
- {
- char buff[10];
- memset(buff,0,sizeof(buff));
- gets(buff);
- printf("\n The buffer entered is [%s]\n",buff);
- return 0;
- }
复制代码
答案:
代码中的问题就在于gets() 函数的使用。
这个函数从 stdin 接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。
这里推荐使用标准函数 fgets() 代替。
第 4 关:free()
下面的程序会在用户输入 freeze 的时候出问题,而 zfish 则不会,为什么?
- #include<stdio.h>
- int main(int argc, char *argv[])
- {
- char *ptr = (char*)malloc(10);
- if(NULL == ptr)
- {
- printf("\n Malloc failed \n");
- return -1;
- }
- else if(argc == 1)
- {
- printf("\n Usage \n");
- }
- else
- {
- memset(ptr, 0, 10);
- strncpy(ptr, argv[1], 9);
- while(*ptr != 'z')
- {
- if(*ptr == '')
- break;
- else
- ptr++;
- }
- if(*ptr == 'z')
- {
- printf("\n String contains 'z'\n");
- // Do some more processing
- }
- free(ptr);
- }
- return 0;
- }
复制代码
答案:
第 5 关:* 和 ++ 操作
下面的代码输出什么:
- #include<stdio.h>
- int main(void)
- {
- char *ptr = "FishC";
- printf("\n [%c] \n",*ptr++);
- printf("\n [%c] \n",*ptr);
-
- return 0;
- }
复制代码
答案:
第 6 关:内存泄露
下面的代码会导致内存泄漏吗:
- #include<stdio.h>
- void main(void)
- {
- char *ptr = (char*)malloc(10);
- if(NULL == ptr)
- {
- printf("\n Malloc failed \n");
- return;
- }
- else
- {
- // Do some processing
- }
- return;
- }
复制代码
答案:
如果你想学习更多关于内存泄露的问题,请去看下面课程中的 P48 内存池教程。
这一次抽测,全部结束,留言告诉我们你做对了几道题呢?!
好啦,下课~
小甲鱼老师的课程:
|
评分
-
参与人数 2 | 荣誉 +7 |
鱼币 +7 |
贡献 +6 |
收起
理由
|
不二如是
| + 6 |
+ 6 |
+ 6 |
鱼C有你更精彩^_^ |
村里小黑
| + 1 |
+ 1 |
|
鱼C有你更精彩^_^ |
查看全部评分
|