C 笔试题 【错误累积成长】
2015-12-05 20:30
141 查看
本文章是我实际参加笔试后做错或则不会做的题目,做做总结:
1、编写一个自己的strcpy函数
(1)需考虑内存重叠问题。
(2)为什么可以从src复制到dst,还要在函数最后返回目标指针。
答案是可以~
表面上看过去他们是反义词,目测是不能同时使用的,好像互相矛盾,但是实际上
可以同时使用,const修饰一个东东时是告诉编译器他不能被程序员人为的通过修饰
的本身修改,但是实际上我们可以通过他的地址来改变他的值或则赋值给别的变量
来修改他。如下:
去读取。通常用来修饰外部采集的数据。
其实我还是不大能理解const和volatile同时修饰一个值有什么意义!!(望知道的大神
解答一二)。笔试的时候答上面两点应该可以吧~~
3、还是关于volatile的。
下面这段代码有什么错误?
这个函数是用来返回输入参数的平方的,但是如果用volatile修饰可能无法返回他们的平
方,比如输入参数是实时采集的。而该函数经过编译器后会编程一下形式。
可以这样解决:
我之前并没有用过这个鬼,所以就随便说了。
正解是:当预处理器处理到#error时将停止编译输出用户自定义的错误信息。用法是:
待续···
1、编写一个自己的strcpy函数
(1)需考虑内存重叠问题。
(2)为什么可以从src复制到dst,还要在函数最后返回目标指针。
char *kcan_strcpy(char *dst,const char *src){ int src_size = sizeof(src) + 1; char *ret = dst; if(dst > src + src_size ||<span style="white-space:pre"> </span>// 内存木有重叠 正向拷贝 dst < src - src_size ){ while(src_size--) *dst++ = *src++; }else{<span style="white-space:pre"> </span>// 内存重叠 逆向拷贝 while(src_size--){ *(dst + src_size) = *(src + src_size); } } return ret; }2、const和volatile可不可以同时使用,比如const volatile int val;
答案是可以~
表面上看过去他们是反义词,目测是不能同时使用的,好像互相矛盾,但是实际上
可以同时使用,const修饰一个东东时是告诉编译器他不能被程序员人为的通过修饰
的本身修改,但是实际上我们可以通过他的地址来改变他的值或则赋值给别的变量
来修改他。如下:
const int a = 1; int *b = &a; *b = 2; // 这个时候a是2用volatile修饰是告诉编译器不要去优化它,不要从缓存中去取值,必须每次从内存中
去读取。通常用来修饰外部采集的数据。
其实我还是不大能理解const和volatile同时修饰一个值有什么意义!!(望知道的大神
解答一二)。笔试的时候答上面两点应该可以吧~~
3、还是关于volatile的。
下面这段代码有什么错误?
int squre(volatile int *ptr){ return *ptr * *ptr; }
这个函数是用来返回输入参数的平方的,但是如果用volatile修饰可能无法返回他们的平
方,比如输入参数是实时采集的。而该函数经过编译器后会编程一下形式。
int squre(volatile int *ptr){ int a = *ptr; int b = *ptr; return a*b; }所以每次去内存中读取的时候可能读取到的值是不一样的,所以返回的便不是平方了。
可以这样解决:
int squre(volatile int *pte){ int a = *ptr; return a*a; }4、#error在预编译时有什么作用
我之前并没有用过这个鬼,所以就随便说了。
正解是:当预处理器处理到#error时将停止编译输出用户自定义的错误信息。用法是:
#error 在这里停止编译了当编译器编译到该处时便会停止编译··
待续···
相关文章推荐
- Size Balanced Tree(SBT)平衡二叉树
- JavaScript事件
- Linux 内核链表
- java中static关键字用法
- 更新CentOS中的python(从2.6.X到2.7.X)
- 可以伸缩的导航栏
- Ubuntu 分区方安
- 60,#Pragma mark 内容 的作用
- Apache服务器配置Php7
- Microsoft Office ->> 完整卸载Office 2007
- 2005 第几天
- 网页图片预加载
- POJ 1426 Find The Multiple --- BFS || DFS
- ArrayList源码分析
- 【解惑】类与对象的初始化问题
- 第四章 访问SQLite数据库
- jsp基础
- Junit4学习笔记
- 【解惑】Java动态绑定机制的内幕
- 双弹簧系统中最小势能问题的基础优化算法研究