最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

在c語言中,使用變量前,需要先對變量的值進行初始化。數(shù)組在內(nèi)存中占用一片連續(xù)的存儲塊。而c語言提供了memset函數(shù)(頭文件string.h)對數(shù)組進行組團賦值。(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]實際上有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é)進行賦值。而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é)進行賦值。但是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個單獨的字節(jié)
而0000 0001 0000 0001 0000 0001 0000 0001的10進制剛好為
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)文章

  • C語言回溯法 實現(xiàn)組合數(shù) 從N個數(shù)中選擇M個數(shù)

    C語言回溯法 實現(xiàn)組合數(shù) 從N個數(shù)中選擇M個數(shù)

    在平時的算法的題目中,時常會遇到組合數(shù)相關(guān)的問題,暴力枚舉。在N個數(shù)中挑選M個數(shù)出來。利用for循環(huán)也可以處理,但是可拓展性不強,于是寫這個模板供以后參考
    2018-08-08
  • C語言實現(xiàn)乒乓球比賽

    C語言實現(xiàn)乒乓球比賽

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)乒乓球比賽,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C++小知識:用++i替代i++

    C++小知識:用++i替代i++

    今天小編就為大家分享一篇關(guān)于C++小知識:用++i替代i++,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C/C++實現(xiàn)磁盤相關(guān)操作的示例代碼

    C/C++實現(xiàn)磁盤相關(guān)操作的示例代碼

    這篇文章主要為大家詳細介紹了C/C++如何實現(xiàn)磁盤相關(guān)操作,例如遍歷磁盤容量、實現(xiàn)磁盤格式化、移除指定磁盤等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • c++中inline的用法分析

    c++中inline的用法分析

    本篇文章是對c++中inline的用法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C/C++的關(guān)鍵字之static你了解嗎

    C/C++的關(guān)鍵字之static你了解嗎

    這篇文章主要為大家詳細介紹了C/C++的關(guān)鍵字之static,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++面試基礎(chǔ)之static關(guān)鍵字詳解

    C++面試基礎(chǔ)之static關(guān)鍵字詳解

    這篇文章主要給大家介紹了關(guān)于C++面試基礎(chǔ)之static關(guān)鍵字的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • C語言之飛機大戰(zhàn)游戲

    C語言之飛機大戰(zhàn)游戲

    這篇文章主要為大家詳細介紹了C語言之飛機大戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語言實現(xiàn)帶頭結(jié)點的鏈表的創(chuàng)建、查找、插入、刪除操作

    C語言實現(xiàn)帶頭結(jié)點的鏈表的創(chuàng)建、查找、插入、刪除操作

    這篇文章主要介紹了C語言實現(xiàn)帶頭結(jié)點的鏈表的創(chuàng)建、查找、插入、刪除操作方法,對于了解數(shù)據(jù)結(jié)構(gòu)中鏈表的各項操作有很好的借鑒價值,需要的朋友可以參考下
    2014-09-09
  • VC隨機函數(shù)srand和rand用法

    VC隨機函數(shù)srand和rand用法

    VC中隨機函數(shù)最常用就是srand和rand(實際上是屬于標(biāo)準(zhǔn)C函數(shù)),其中srand負責(zé)設(shè)置隨機種子,rand則負責(zé)生成隨機數(shù)。使用此二隨機函數(shù)需要包含<stdlib.h>頭文件
    2016-11-11

最新評論

平南县| 阜新| 玉山县| 邵阳市| 资源县| 凤凰县| 金华市| 钟山县| 鄄城县| 建平县| 曲阜市| 花莲市| 阿城市| 梁山县| 庄河市| 永定县| 涟源市| 武胜县| 西乡县| 容城县| 唐海县| 辽中县| 溧水县| 义马市| 宜丰县| 汶上县| 四川省| 修文县| 贵定县| 黄平县| 渝中区| 井陉县| 莫力| 彰武县| 石台县| 龙门县| 满洲里市| 平阳县| 泗洪县| 东辽县| 台东市|