程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C/C++經常使用函數易錯點剖析

C/C++經常使用函數易錯點剖析

編輯:關於C++

C/C++經常使用函數易錯點剖析。本站提示廣大學習愛好者:(C/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++法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved