登入|加入我們
論壇 > 台南一中資訊社 > 教學文件
發帖|
看3022|回0|收藏
樓主 Sylveon 只看他
2014-8-25 18:42:51
參考資料:
http://www.cplusplus.com/reference/cstring/memset/
http://jax-work-archive.blogspot.tw/2011/07/c-memset.html


標頭 cstring
函數原型: void * memset ( void * ptr, int value, size_t num );

功能:可以快速設定一個連續的記憶體區塊(ex.陣列)的數值

參數說明:
ptr:作用對象的指標
value:欲初始化的值
num : 填充數量


回傳值:
ptr本身

常見用法:
1.把陣列所有元素都設定為0。
在這範例裡,我們使用sizeof()運算子直接取得陣列所佔的記憶體大小。
[mw_shl_code=cpp,true]#include<iostream>
#include<cstring>
using namespace std;

int main()
{
        int arr[5]= { 1,2,3,4,5 };
        
        memset( arr , 0 , sizeof(arr) );
        //sizeof(arr) = sizeof(int)*5
        for(int i=0;i<5;++i)
        {
                cout<<arr<<' ';
        }
}[/mw_shl_code]

要注意,填充的單位為「位元組」,所以在這裡的sizeof(arr)不等於5,而是等於5乘以每一個int所佔的位元組
再這種用法中除了0之外,常用的還有-1,0x3F,0x7F,後兩個通常用來代表初始化為無限大
Sylveon  改成cstring好了,避免日後有人背太多,不過函數原型定義是在memory.h  發表于 2014-8-25 20:57
Sylveon  根據C++reference,memset歸類上在cstring,但memory.h裡有同定義  發表于 2014-8-25 20:55
domen111  C++標準上memset應該是在memory.h還是在cstring,以前沒有聽說過memory.h,沒想到真的編譯的過,不過為什麼只有memory.h沒有cmemory?  發表于 2014-8-25 19:41

竹園論壇

首頁|電腦版