今天看到了menset的函式,不曉得是什麼,baidu了一下。
void *memset(void *s,int c,size_t n)
總的作用:將已開闢記憶體空間 s 的首 n 個位元組的值設為值 c。
void是乙個通用型別,使用的時候可以用int、char等等。
memset() 函式常用於記憶體空間初始化。如:
char str[100];
memset(str,0,100);
memset用來對一段記憶體空間全部設定為某個字元,一般用在對定義的字串進行初始化為『 』或『\0』;例:char a[100];memset(a, '\0', sizeof(a));
如果以這樣的方式宣告陣列
int a[256]=;
則陣列內全部數字自動初始化為0,即一開始陣列內所有元素的值為0
如果這樣宣告
int a[256];
則陣列沒有初始化,則開始時陣列內的數字可以是任意值。
關於null,\0:
stdio.h中有這句:
#define null 0
null在編譯時都轉換為0了;
\0是ascll碼中編號為0的那個字元,也就是(int)(\0)==0;
看乙個程式:
memset();將每一位元組的最後一位變成1
#include
int main()
這麼做並不可以達到目的,注意memset是對每個位元組賦值,而int有4位元組(32位)
比如這樣,memset(a,1,sizeof(a));
則a中的每個元素都被賦值成為2進製數為,00000001000000010000000100000001,的數
轉換成10進製就是16843009
所以,一般用memset對陣列賦0或-1,賦其他的值就要用迴圈來實現。
而在乙個char為乙個byte的編譯器裡面,是可以這麼用的,但是要用char型的值,如
memset(b , '1', sizeof(b));
或者memset(b , 49, sizeof(b));
因為char型的1用'1'或者49表示。
// mem.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include
#include
using namespace std;
int main()
{ char b[10];
memset(b , '1', sizeof(b));
for(int i = 0 ; i < 10 ; i++)
cout return 0;
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的記憶體位址溢位。
類的使用,物件的使用
一 類的使用 class student school luffycity def eat self print yes defdrink self print drink 檢視print student.dict 增student.teacher gaohui print student.dict...
messagebox的使用(使用整理)
定義 messagebox顯示乙個模態對話方塊,其中包含乙個系統圖示 一組按鈕和乙個簡短的特定於應用程式訊息,如狀態或錯誤的資訊。訊息框中返回乙個整數值,該值指示使用者單擊了哪個按鈕。messagebox hwnd hwnd text,caption pchar type word hwnd 訊息框...
gulp的使用基本使用
1.全域性安裝gulp 目的是在命令列裡使用gulp的命令 2.命令列中cd到專案目錄,區域性安裝gulp 如果不在專案中再次安裝會報錯,據說這樣是為了避免發生版本衝突 3.在專案目錄下新建乙個gulpfile.js檔案 必須這個名字,這個檔案算是乙個配置檔案 編寫我們的需求,以便gulp能按著我們...