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