查看: 2975|回復: 3
打印 上一主題 下一主題

[C/C++] memset 的用法

[複製鏈接]
  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    跳轉到指定樓層
    樓主
    發表於 2014-8-25 18:42:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    參考資料:
    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()運算子直接取得陣列所佔的記憶體大小。
    [C++] 純文本查看 復制代碼
    #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[i]<<' ';
            }
    }


    要注意,填充的單位為「位元組」,所以在這裡的sizeof(arr)不等於5,而是等於5乘以每一個int所佔的位元組
    再這種用法中除了0之外,常用的還有-1,0x3F,0x7F,後兩個通常用來代表初始化為無限大

    點評

    改成cstring好了,避免日後有人背太多,不過函數原型定義是在memory.h  發表於 2014-8-25 20:57
    根據C++reference,memset歸類上在cstring,但memory.h裡有同定義  發表於 2014-8-25 20:55
    C++標準上memset應該是在memory.h還是在cstring,以前沒有聽說過memory.h,沒想到真的編譯的過,不過為什麼只有memory.h沒有cmemory?  發表於 2014-8-25 19:41
    回復

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表