C/C++常用函数易错点分析

 更新时间:2014年08月27日 16:19:17   投稿:shichen2014  
这篇文章主要介绍了C/C++常用函数易错点分析,包含了memset、sizeof、getchar三个常用函数的分析,需要的朋友可以参考下

本文简单分析了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++程序设计有所帮助。

相关文章

  • C 标准I/O库的粗略实现教程

    C 标准I/O库的粗略实现教程

    下面小编就为大家分享一篇C 标准I/O库的粗略实现教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • C语言中输入函数(scanf()、fgets()和gets())的区别详解

    C语言中输入函数(scanf()、fgets()和gets())的区别详解

    这篇文章主要给大家介绍了关于C语言中三种输入函数(scanf()、fgets()和gets())区别的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • 十个C++恶搞朋友的代码合集

    十个C++恶搞朋友的代码合集

    这篇文章主要为大家整理了十个C++中可以恶搞朋友的代码合集(注意!从第五个开始为危险/永久性程序,请慎重使用),感兴趣的小伙伴可以收藏一下
    2023-02-02
  • 详解C++中的数据抽象

    详解C++中的数据抽象

    这篇文章主要介绍了详解C++中的数据抽象,数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节,需要的朋友可以参考下
    2023-05-05
  • 从头学习C语言之switch语句和分支嵌套

    从头学习C语言之switch语句和分支嵌套

    这篇文章主要为大家详细介绍了C语言之switch语句和分支嵌套,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • C语言修炼之路初识分支句 循环助本心下篇

    C语言修炼之路初识分支句 循环助本心下篇

    现实生活中我们经常需要根据不同的条件做出不同的选择。程序设计中也需要根据条件来选择不同的程序进行处理,这称之为分支结构,当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,一般情况下,C 程序员偏向于使用 for(;;) 结构来表示一个无限循环
    2022-03-03
  • C++实现屏幕截图功能

    C++实现屏幕截图功能

    这篇文章主要为大家详细介绍了C++实现屏幕截图功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 可能是全网最详细的Qt连接MySQL数据库教程

    可能是全网最详细的Qt连接MySQL数据库教程

    QT众所周知是一个开源的,以C++为底层的可视化工具库,下面这篇文章主要给大家介绍了关于最详细的Qt连接MySQL数据库教程的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • OpenCV实现霍夫变换直线检测

    OpenCV实现霍夫变换直线检测

    这篇文章主要为大家详细介绍了OpenCV实现霍夫变换直线检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Opencv2.4.9函数HoughLinesP分析

    Opencv2.4.9函数HoughLinesP分析

    这篇文章主要为大家详细介绍了Opencv2.4.9函数HoughLinesP,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01

最新评论