C 笔试题 【错误累积成长】
来源:互联网 发布:淘宝5星好评怎么写 编辑:程序博客网 时间:2024/05/22 03:34
本文章是我实际参加笔试后做错或则不会做的题目,做做总结:
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 在这里停止编译了当编译器编译到该处时便会停止编译··
待续···
0 0
- C 笔试题 【错误累积成长】
- 错误累积
- Android程序错误累积
- C++错误累积
- C知识点累积篇
- C/C++ 知识累积。
- 安卓错误经验累积
- 爱奇艺笔试题之成长值计算
- c++/c笔试题
- 累积
- 自用.....c,c++,C#编程经验累积
- c/c++笔试题
- c笔试题
- C语言笔试题
- C语言笔试题
- C/C++笔试题!!!!
- C语言笔试题
- c笔试题
- java.sql.SQLException: Your password has expired. To log in you must change it using a client that s
- Apache服务器配置Php7
- 更新CentOS中的python(从2.6.X到2.7.X)
- java中static关键字用法
- Size Balanced Tree(SBT)平衡二叉树
- C 笔试题 【错误累积成长】
- jdbc中EXECUTE方法与executeQuery,executeUpdate方法的运用
- 欢迎使用CSDN-markdown编辑器
- 如何写xpath的小笔记
- Linux下Memcached的安装步骤
- g++ 无法调试
- Android support包以及系统主题相关
- MyEclipse中安装SVN插件
- valuestack,stackContext,ActionContext.之间的关系