C/C++常用函数易错点分析
作者:shichen2014 发布时间:2021-11-13 23:21:30
标签:C/C++,函数
本文简单分析了C/C++中常用函数的易错点,包括memset、sizeof、getchar等函数。分享给大家供大家参考之用。具体分析如下:
1.memset
#include <string.h>
void* memset( void* buffer, int ch, size_t count );
将内存中buffer的前count个字节的内容全部设置为ch指定的ASCII值.经常用来初始化数组.复制时以字节为单位,如果buffer是int long,或者其他类型的指针时,需要注意不一定为数组的大小,应该是为 数组大小*sizeof(类型).推荐直接使用:
sizeof(buffer)//buffer是数组
2.sizeof
返回类型大小,以字节为单位.
对数组和指针是不同的.
int *p=new int[5];
int q[5]={0};
cout<<sizeof(p)<<endl;
cout<<sizeof(q)<<endl;
delete[] p;
输出值是不同的.(64位机器测试)
sizeof(p):p为指针,输出的是指针类型的大小,64位上64/8=8
sizeof(q):q为int类型的数组,输出的是数组所占字节数.4*5=20.
3.getchar
#include <stdio.h>
int getchar( void );
这里getchar返回的是整形而不是char,若出现下面代码.
char c;
while((c=getchar())!=EOF)
{
XXX
}
这里c是被截断int类型的一部分,c可能无法容下所有字符,特别是EOF.
出现结果的可能,
1)某些字符截断后与EOF相同,导致程序在运行时正常终止
2)陷入死循环
3)有些编译器确实对c进行了截断处理,但是比较时,比较的 是getchar的返回值与EOF,导致程序看似"正常运行"
希望本文所述对大家的C/C++程序设计有所帮助。


猜你喜欢
- 今天在接手别人的一个项目的时候遇到一个坑,坑死我了;是一个打包的问题,好不容易我把代码写完了准备打包测试了,结果java -jar xxx.
- 目录1、两阶段终止模式介绍2、Terminator代码演示3、TerminationRequester4、模拟客户端或者服务端都可能终止服务
- C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际
- 前言:项目开发中日志是不可缺少的一部分,通过日志能够定位和分析事故原因。目前流行日志框架包含了log4j、log4j2、logback等,另
- 问题描述ResultSet 表示 select 语句的查询结果集。ResultSet 对象具有指向其当前数据行的指针, 最初,指针被置于第一
- 效果展示单选版可看上篇博文 用flutter封装一个点击菜单工具栏组件本文是CHeckbox多选版效果如图所示,点击选项回调选中的
- 蔡勒公式 蔡勒(Zeller)公式:是一个计算星期的公式。随便给一个日期,就能用这个公式推算出是星期几。蔡勒公式如下:W = [
- MultiFrameImageStreamCompleterMultiFrameImageStreamCompleter 是一个可组合的 I
- 一、缓存的基本概念缓存 。这是一个简单但非常有效的概念,这个想法的核心是记录过程数据,重用操作结果。当执行繁重的操作时,我们会将结果保存在我
- 老规矩,先上图看效果。说明TextView的跑马灯效果也就是指当你只想让TextView单行显示,可是文本内容却又超过一行时,自动从左往右慢
- 一、引入类型别名当配置 XML 文件,需要指明Java类型时,类型别名可替代Java类型的全名,一般会设置一个简单缩写的类型别名去替代它,用
- 本文实例为大家分享了android自定义波浪加载动画的具体代码,供大家参考,具体内容如下效果图1.自定义控件 WaveViewpackage
- 接着上一篇继续,老铁们1.检查数组的有序性给定一个整型数组, 判断是否该数组是有序的(升序) public static bo
- 本文实例讲述了Java编程实现判断网上邻居文件是否存在的方法。分享给大家供大家参考,具体如下:由于java不支持通过//192.168.19
- 1.查找文件find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name
- 快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一
- Java Hutool 包工具类推荐 ExcelUtil包引入hutool包版本号可根据实际情况更换<dependency> &
- 使用CachePut注解,该方法每次都会执行,会清除对应的key值得缓存(或者更新),分为以下两种情况:如果返回值null,下次进行该key
- 1.启动项目的时候报错1.Error starting ApplicationContext. To display the auto-co
- 本文同时讨论了IComparable和IComparer接口,原因有两点。这两个接口经常一起使用。虽然接口类似且名称相似,但它们却有不同的用