C/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++程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c/c++
, 函数
易错点
c语言常用函数、r语言常用函数、c语言常用库函数、c语言常用算法分析、c语言常用函数大全,以便于您获取更多的相关知识。

时间: 2024-08-02 14:07:26

C/C++常用函数易错点分析_C 语言的相关文章

C++虚函数的实现机制分析_C 语言

本文针对C++的虚函数的实现机制进行较为深入的分析,具体如下: 1.简单地说,虚函数是通过虚函数表实现的.那么,什么是虚函数表呢? 事实上,如果一个类中含有虚函数,则系统会为这个类分配一个指针成员指向一张虚函数表(vtbl),表中每一项指向一个虚函数的地址,实现上就是一个函数指针的数组. 例如下面这个例子: class Parent { public: virtual void foo1() { } virtual void foo1() { } void foo1(); }; class Ch

C++中回调函数(CallBack)的用法分析_C 语言

本文实例分析了C++中回调函数(CallBack)的用法.分享给大家供大家参考.具体分析如下: 如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过. 其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即"this"指针,C++通过传递this指针给其成员函数从而实现程序函数可以访问C++的数据成员.这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员.由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调函数安装时

构造函数不能声明为虚函数的原因及分析_C 语言

1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的.问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数. 2. 从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用.构造函数本身就是要初始化实例,那使用虚函数也没有实际意义呀.所以构造函数没有必要是虚函数.虚函数的作用在于通过父类的指

C语言的递归思想实例分析_C 语言

本文实例分析C语言的递归思想,分享给大家供大家参考之用.具体方法如下: 通俗点来说,递归就是自己调用自己. 递归的难点一是理解递归的执行调用过程,二是设置一个合理的递归结束条件. 下面来看一段摘自书中的简单程序: #include <STDIO.H> long fact(int n); long rfact(int n); int main(void) { int num; printf("This program calculates factorials.\n"); p

C++ read函数读入int整形数据_C 语言

Read函数定义 通过read函数将文件中的数据按照一定的长度读取出来并且存放在新的数组中.用于从文件中读取数据. 函数原型istream& read (char* s, streamsize n); 参数char* s取出数据的流向的char类型数组指针,streamsize n表示数组的长度 #include<iostream> using namespace std; int read()//read函数主体部分 { int x=0,f=1;char ch=getchar();

C/C++中的mem函数和strcopy函数的区别和应用_C 语言

strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符. memcpy提供了一般内存的复制.即memcpy对于需要复制的内容没有限制,因此用途更广. mem系列函数是面试的时候常考的知识点,我们需要熟练掌握这三个函数的原理和代码实现,要能准确无误的写出代码. memcpy.memset和memset三个函数在使用过程中,均需包含以下头文件: //在C中 #include<

C语言编程中函数的基本学习教程_C 语言

C 语言中的函数等价于 Fortran 语言中的子程序或函数,也等价于 Pascal 语言中的过程或函数.函数为计算的封装提供了一种简便的方法,此后使用函数时不需要考虑它是如何实现的.使用设计正确的函数,程序员无需考虑功能是如何实现的,而只需知道它具有哪些功能就够了.在 C 语言中可以简单.方便.高效地使用函数.我们经常会看到在定义后仅调用了一次的短函数,这样做可以使代码段更清晰易读. 到目前为止,我们所使用的函数(如 printf.getchar 和 putchar 等)都是函数库中提供的函数

C语言函数的递归和调用实例分析_C 语言

一.基本内容: C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己. 要点: 1.C语言函数可以递归调用. 2.可以通过直接或间接两种方式调用.目前只讨论直接递归调用. 二.递归条件 采用递归方法来解决问题,必须符合以下三个条件: 1.可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减. 说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用. 2

memset函数的使用分析_C 语言

1.void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c.2.例子 复制代码 代码如下: #includevoid main(){char *s="Golden Global View";clrscr();memset(s,'G',6);printf("%s",s);getchar();return 0;} 3.memset() 函数常用于内存空间初始化.如: 复制代码 代码如下: c