欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言memset函數(shù)詳解

 更新時間:2021年09月18日 11:05:42   作者:竹一筆記  
這篇文章主要介紹了C語言中的memset()函數(shù),包括其與memcpy()函數(shù)的區(qū)別,需要的朋友可以參考下,希望能夠給你帶來幫助

在c語言中,使用變量前,需要先對變量的值進(jìn)行初始化。數(shù)組在內(nèi)存中占用一片連續(xù)的存儲塊。而c語言提供了memset函數(shù)(頭文件string.h)對數(shù)組進(jìn)行組團(tuán)賦值。(memset函數(shù)也能對變量賦值,但只有無聊的人才會這么做。詳見下文目錄五)

一、memset函數(shù)原型:

void memset ( void *s , char ch, unsigned n )

函數(shù)功能:將s為首地址的一片連續(xù)的n個字節(jié)內(nèi)存單元都賦值為ch

二、使用memset函數(shù)

# include <stdio.h>
# include <string.h>
int main() {
    char c[10];
    // 把數(shù)組c的10個元素都賦值為'a'
    memset(c, 'a', 10);
    for (int i=0; i<10; i++) {
        printf("%c\t", c[i]);
    }
    return 0;
}

輸出:
a a a a a a a a a a

# include <stdio.h>
# include <string.h>
int main()
{
    int a[10];
    memset(a, 0, 10*sizeof(int));
    /* 數(shù)組a是int類型的,一個int占4個字節(jié),所以a[10]實(shí)際上有40個字節(jié)。
       而char類型只占1個字節(jié),所以不需要乘sizeof(char) */
    // 輸出數(shù)組a和b
    for (int i=0; i<10; i++) {
        printf("%d\t", a[i]);
    }
    printf("\n");
    return 0;
}

輸出:
0 0 0 0 0 0 0 0 0 0

emset函數(shù)是對n個字節(jié)進(jìn)行賦值。而char類型占1個字節(jié)。但是int類型占4個字節(jié),所以對int、short等類型賦值時,需要乘上字節(jié)數(shù)。

三、給int類型賦值為1

# include <stdio.h>
# include <string.h>
int main()
{
    int a[10];
    memset(a, 1, 10*sizeof(int));
    // 輸出數(shù)組a
    for (int i=0; i<10; i++) {
        printf("%d\t", a[i]);
    }
    return 0;
}

輸出:
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009

輸出結(jié)果可以看到,并沒有給數(shù)組元素賦值為1。為什么呢?這是為什么呢?

前面我們說過,memset是對連續(xù)的n個字節(jié)進(jìn)行賦值。但是int類型占4個字節(jié)。memset賦值時,直接將數(shù)組拆成40個字節(jié)賦值,并沒有把4個字節(jié)看成一個整體

四、扒開內(nèi)存

我們定義一個數(shù)組;
int a[2];
memset(a, 1, 2*sizeof(int));
假設(shè)內(nèi)存中每個位都是0,定義數(shù)組,以a為首地址的內(nèi)存各個位:
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
使用memset函數(shù),對每個字節(jié)賦值為1。一個字節(jié)為8位,所以,數(shù)組變?yōu)?
0000 0001 0000 0001 0000 0001 0000 0001
0000 0001 0000 0001 0000 0001 0000 0001
注意,賦值數(shù)組時,一個int被拆成了4個單獨(dú)的字節(jié)
而0000 0001 0000 0001 0000 0001 0000 0001的10進(jìn)制剛好為
16,843,009

五、memset給變量賦值

memset函數(shù)第一個參數(shù)是指針類型,也就是說,只要我們給他一個地址就行了

# include <stdio.h>
# include <string.h>
int main()
{
    char a;
    memset(&a, 'c', 1);
    printf("%c\n", a);
    return 0;
}

輸出:
c

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 設(shè)計(jì)模式中的備忘錄模式解析及相關(guān)C++實(shí)例應(yīng)用

    設(shè)計(jì)模式中的備忘錄模式解析及相關(guān)C++實(shí)例應(yīng)用

    這篇文章主要介紹了設(shè)計(jì)模式中的備忘錄模式解析及相關(guān)C++實(shí)例應(yīng)用,備忘錄模式也經(jīng)常被用來在命令模式中維護(hù)可以撤銷(Undo)操作的狀態(tài),需要的朋友可以參考下
    2016-03-03
  • 一文讀懂C++ 虛函數(shù) virtual

    一文讀懂C++ 虛函數(shù) virtual

    這篇文章主要介紹了C++ 虛函數(shù) virtual的相關(guān)資料,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • C/C++中不定參數(shù)的使用詳解

    C/C++中不定參數(shù)的使用詳解

    這篇文章主要為大家詳細(xì)介紹了C/C++中不定參數(shù)的使用的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C++庫std::flush的具體使用

    C++庫std::flush的具體使用

    std::flush是C++標(biāo)準(zhǔn)庫中的一個操作符,用于刷新輸出流,本文主要介紹了C++庫std::flush的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • OpenCV圖像處理之常見的圖像灰度變換

    OpenCV圖像處理之常見的圖像灰度變換

    這篇文章主要介紹了OpenCV圖像處理之常見的圖像灰度變換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • C++ 使用CRC32檢測內(nèi)存映像完整性的實(shí)現(xiàn)步驟

    C++ 使用CRC32檢測內(nèi)存映像完整性的實(shí)現(xiàn)步驟

    當(dāng)我們使用動態(tài)補(bǔ)丁的時候,那么內(nèi)存中同樣不存在校驗(yàn)效果,也就無法抵御對方動態(tài)修改機(jī)器碼了,為了防止解密者直接對內(nèi)存打補(bǔ)丁,我們需要在硬盤校驗(yàn)的基礎(chǔ)上,增加內(nèi)存校驗(yàn),防止動態(tài)補(bǔ)丁的運(yùn)用。
    2021-06-06
  • c++使用正則表達(dá)式提取關(guān)鍵字的方法

    c++使用正則表達(dá)式提取關(guān)鍵字的方法

    這篇文章給大家介紹了c++使用正則表達(dá)式提取關(guān)鍵字的方法,相對來說比較簡單,同時給大家提到了c++通過正則表達(dá)式提取匹配到的字符串的方法,非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-08-08
  • C語言中static的使用方法實(shí)例詳解

    C語言中static的使用方法實(shí)例詳解

    static一般用于修飾局部變量,全局變量,函數(shù),下面這篇文章主要給大家介紹了關(guān)于C語言中static用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用

    詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用

    這篇文章主要介紹了詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08
  • C++輸出上三角/下三角/菱形/楊輝三角形(實(shí)現(xiàn)代碼)

    C++輸出上三角/下三角/菱形/楊輝三角形(實(shí)現(xiàn)代碼)

    本篇文章是對C++中輸出上三角/下三角/菱形/楊輝三角形的示例代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07

最新評論