12个有趣的C语言问答
2016-03-06 21:56
337 查看
12个有趣的C语言问答
0. gets() 方法Q:以下代码有个被隐藏住的问题,你能找到它吗?
A:这个不显眼的问题就是使用了 gets() 方法。此方法接受一个string类型参数,但是却没有检测此数值是否 有足够的空间来拷贝数据。所以这里我们一般用 fgets() 方法将来的更好。
Q:密码防护是很基本的功能,看看能否搞定下面这段代码?
Q:请问下面这段代码能否通过编译?如果能的话,那么这段代码中隐含什么问题吗?
3,内存泄露
Q:请问以下代码有内存泄露吗?
Note: 如果你需要了解更多关于内存泄露的问题以及如何使用工具检测内存泄露,你可以参考这篇文章 Valgrind
4,free() 方法
Q:以下代码当用户输入’freeze’时会奔溃,而如果输入’zebra’则运行正常,这是为什么?
5,atexit with _exit
Q:在以下代码,atexit()方法并没有被调用,你知道为什么吗?
6,void* 与 C 结构体
Q:能否设计一个方法接受任意类型的参数然后返回整数?同时是否有办法传递多个这样的参数?
A:一个能接受任意类型参数的方法像下面这个样子:
7,* 与 ++ 操作符
Q:以下代码将输出什么?为什么?
因为++与 * 的优先级一样,所以 *ptr++ 将会从右向左操作。按照这个逻辑,ptr++ 会先执行然后执行*ptr。所以第一个结果是’L'。也因为 ++ 被执行了,所以下一个printf() 结果是’i'。
8,Making changes in Code segment
Q:以下代码运行时一定会崩溃,你能说出原因吗?
9,Process that changes its own name
Q:你能否写一个程序在它运行时修改它的名称?
A:以下代码可以完成
Q:下面的代码有问题吗?如果有,如何修改?
B,处理 printf() 参数
Q:以下代码输出请问是什么?
相关文章推荐
- [土狗之路]coursera C语言进阶 习题 字符串中次数第2多的字母
- [土狗之路]coursera C语言进阶 习题 含k个3的数
- 1104. Sum of Number Segments (20)
- c++编程思想-第2章 对象的创建与使用-2
- C++学习 之const
- C++ mutable
- 【总结】C++基类与派生类的赋值兼容规则
- C语言中.h文件和.c文件详细解析 此博文包含图片
- 百练2713:肿瘤面积
- C#与C++的相似以及参照java,C++来学习C#
- 再谈C# ,C++和java 以及C
- Socket代码小例子——C++版
- c++中重载,重写,重定义的区别
- 背包
- 个人项目-数组求和(语言:C++)
- 静态库与动态库及交叉编译总结及学习较底层编程:动手写一个C语言编译器
- c语言学习笔记--初识c
- C语言之位运算
- C语言模仿C#事件
- PAT (Advanced Level) Practice 1006