国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C/C++常用函數易錯點分析

2020-01-26 15:22:10
字體:
來源:轉載
供稿:網友

本文簡單分析了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++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沅陵县| 宜章县| 嵊泗县| 吉木萨尔县| 扶沟县| 泰州市| 和田市| 临城县| 金秀| 秦皇岛市| 德保县| 隆子县| 新郑市| 京山县| 罗江县| 桓仁| 西城区| 黑龙江省| 会泽县| 子长县| 青神县| 镇沅| 万荣县| 禹城市| 清涧县| 河西区| 怀集县| 甘泉县| 西乡县| 芒康县| 凌云县| 嘉祥县| 抚宁县| 连城县| 浦城县| 舒兰市| 鹤峰县| 红原县| 平乡县| 那曲县| 德昌县|