memset memcpy的使用方法!

2021-08-22 09:27:45 字數 1597 閱讀 7898

今天看到了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能按著我們...