C/C++常用函數(shù)易錯點分析
本文簡單分析了C/C++中常用函數(shù)的易錯點,包括memset、sizeof、getchar等函數(shù)。分享給大家供大家參考之用。具體分析如下:
1.memset
#include <string.h> void* memset( void* buffer, int ch, size_t count );
將內(nèi)存中buffer的前count個字節(jié)的內(nèi)容全部設(shè)置為ch指定的ASCII值.經(jīng)常用來初始化數(shù)組.復(fù)制時以字節(jié)為單位,如果buffer是int long,或者其他類型的指針時,需要注意不一定為數(shù)組的大小,應(yīng)該是為 數(shù)組大小*sizeof(類型).推薦直接使用:
sizeof(buffer)//buffer是數(shù)組
2.sizeof
返回類型大小,以字節(jié)為單位.
對數(shù)組和指針是不同的.
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類型的數(shù)組,輸出的是數(shù)組所占字節(jié)數(shù).4*5=20.
3.getchar
#include <stdio.h> int getchar( void );
這里getchar返回的是整形而不是char,若出現(xiàn)下面代碼.
char c; while((c=getchar())!=EOF) { XXX }
這里c是被截斷int類型的一部分,c可能無法容下所有字符,特別是EOF.
出現(xiàn)結(jié)果的可能,
1)某些字符截斷后與EOF相同,導(dǎo)致程序在運行時正常終止
2)陷入死循環(huán)
3)有些編譯器確實對c進行了截斷處理,但是比較時,比較的 是getchar的返回值與EOF,導(dǎo)致程序看似"正常運行"
希望本文所述對大家的C/C++程序設(shè)計有所幫助。
相關(guān)文章
win10環(huán)境下C++ vs2015編譯opencv249的教程
這篇文章主要介紹了win10環(huán)境下C++ vs2015編譯opencv249的教程,本文分步驟給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03解決Visual?Studio?Code錯誤Cannot?build?and?debug?because?
這篇文章主要為大家介紹了解決Visual?Studio?Code錯誤Cannot?build?and?debug?because?the及分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07VsCode搭建C語言運行環(huán)境詳細過程及終端亂碼問題解決方案
這篇文章主要介紹了VsCode搭建C語言運行環(huán)境以及終端亂碼問題解決,在VsCode中搭建C/C++運行環(huán)境需要先安裝幾個插件,具體插件文中給大家詳細介紹,需要的朋友可以參考下2022-12-12C++中string轉(zhuǎn)換為char*類型返回后亂碼問題解決
這篇文章主要介紹了C++中string轉(zhuǎn)換為char*類型返回后亂碼問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07VC實現(xiàn)讓關(guān)閉按鈕成灰色不可用的方法
這篇文章主要介紹了VC實現(xiàn)讓關(guān)閉按鈕成灰色不可用的方法,比較實用的一個特殊功能,需要的朋友可以參考下2014-08-08