C 程式設計技巧點滴

2021-04-12 21:32:29 字數 1496 閱讀 7084

1。什麼是預編譯標頭檔案

2.c++:memset ,memcpy 和strcpy 的區別

#include "memory.h"

memset用來對一段記憶體空間全部設定為某個字元,一般用在對定義的字串進行初始化為『 '或『/0';例:char a[100];memset(a, '/0', sizeof(a));

memcpy用來做記憶體拷貝,你可以拿它拷貝任何資料型別的物件,可以指定拷貝的資料長度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),會造成b的記憶體位址溢位。

strcpy就只能拷貝字串了,它遇到'/0'就結束拷貝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字串長度(第乙個『/0'之前)是否超過50位,如超過,則會造成b的記憶體位址溢位。

strcpy

原型:extern char *strcpy(char *dest,char *src);

用法:#include

功能:把src所指由null結束的字串複製到dest所指的陣列中。

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。

返回指向dest的指標。

memcpy

原型:extern void *memcpy(void *dest, void *src, unsigned int count);

用法:#include

功能:由src所指記憶體區域複製count個位元組到dest所指記憶體區域。

說明:src和dest所指記憶體區域不能重疊,函式返回指向dest的指標。

memset

原型:extern void *memset(void *buffer, char c, int count);

用法:#include

功能:把buffer所指記憶體區域的前count個位元組設定成字元c。

說明:返回指向buffer的指標。

3.assert()是幹什麼用的

assert()是乙個除錯程式時經常使用的巨集,在程式執行時它計算括號內的表示式,如果表示式為false (0), 程式將報告錯誤,並終止執行。如果表示式不為0,則繼續執行後面的語句。這個巨集通常原來判斷程式中是否出現了明顯非法的資料,如果出現了終止程式以免導致嚴重後果,同時也便於查詢錯誤。例如,變數n在程式中不應該為0,如果為0可能導致錯誤,你可以這樣寫程式:

......

assert( n != 0);

k = 10/ n;

......

assert只有在debug版本中才有效,如果編譯為release版本則被忽略。

assert()的功能類似,它是ansi c標準中規定的函式,它與assert的乙個重要區別是可以用在release版本中。

4.system("pause");

系統的暫停程式,按任意鍵繼續,螢幕會列印,"按任意鍵繼續。。。。。" 省去了使用getchar();

C 程式設計點滴

有效解決記憶體洩露 一 你需要乙個函式將乙個陣列賦值為等差數列,並將會在函式的外部使用它。不合理 int getarray int n return p 合理 void getarray int p,int n 解析 檢查記憶體洩露的最好辦法,就是檢查完全配對的申請和釋放,在函式中申請而在外部釋放,...

程式設計經驗點滴 動態SQL的拼接技巧

常見的誤解有 1.只用 ado.net 無法進行動態 sql程式設計客棧 拼接。2.有幾個動態引數,的重複量就成了這些引數的不同數量的組合數,動態引數越多,重複量越大。對於第二個問題,以下的錯誤 為其證據 複製 如下 if id 0 string.isnullorempty name if id 0...

C 高質量程式設計點滴

摘自 http www.sudu.cn info html edu c 20070103 236588.html 一 你需要乙個函式將乙個陣列賦值為等差數列,並將會在函式的外部使用他。不合理 int getarray int n return p 合理 void getarray int p,int...