亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

二、使用memset函數(shù)

# include <stdio.h>
# include <string.h>
int main() {
    char c[10];
    // 把數(shù)組c的10個(gè)元素都賦值為'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類型的,一個(gè)int占4個(gè)字節(jié),所以a[10]實(shí)際上有40個(gè)字節(jié)。
       而char類型只占1個(gè)字節(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ù)是對(duì)n個(gè)字節(jié)進(jìn)行賦值。而char類型占1個(gè)字節(jié)。但是int類型占4個(gè)字節(jié),所以對(duì)int、short等類型賦值時(shí),需要乘上字節(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é)果可以看到,并沒(méi)有給數(shù)組元素賦值為1。為什么呢?這是為什么呢?

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

四、扒開內(nèi)存

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

五、memset給變量賦值

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

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

輸出:
c

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(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)常被用來(lái)在命令模式中維護(hù)可以撤銷(Undo)操作的狀態(tài),需要的朋友可以參考下
    2016-03-03
  • 一文讀懂C++ 虛函數(shù) virtual

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

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

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

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

    C++庫(kù)std::flush的具體使用

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

    OpenCV圖像處理之常見(jiàn)的圖像灰度變換

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論