• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Memset  用來(lái)對(duì)一段內(nèi)存空間全部設(shè)置為某個(gè)字符,一般用在對(duì)定義的字符串進(jìn)行初始化為‘ ’‘\0’;

            :char a[100];memset(a, '\0', sizeof(a));

                 memset可以方便的清空一個(gè)結(jié)構(gòu)類型的變量或數(shù)組。

            如:

            struct sample_struct
            {
             char   csName[16];
             int    iSeq;
             int    iType;
            };

            對(duì)于變量
            struct sample_strcut  stTest;

            一般情況下,清空stTest的方法:

            stTest.csName[0]='\0';
            stTest.iSeq=0;
            stTest.iType=0;

            memset就非常方便:
            memset(&stTest,0,sizeof(struct sample_struct));

            如果是數(shù)組:

             struct sample_struct   TEST[10];

            memset(TEST,0,sizeof(struct sample_struct)*10);

            memcpy  用來(lái)做內(nèi)存拷貝,你可以拿它拷貝任何數(shù)據(jù)類型的對(duì)象,可以指定拷貝的數(shù)據(jù)長(zhǎng)度。

            例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),會(huì)造成b的內(nèi)存地址溢出。

            Strcpy   就只能拷貝字符串了,它遇到'\0'就結(jié)束拷貝。

            例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串長(zhǎng)度(第一個(gè)‘\0’之前)是否超過(guò)50位,如超過(guò),則會(huì)造成b的內(nèi)存地址溢出。

            str也可以用用個(gè)參數(shù)的strncpy(a,b,n)

            ========================================================

            memset主要應(yīng)用是初始化某個(gè)內(nèi)存空間。
            memcpy
            是用于copy源空間的數(shù)據(jù)到目的空間中。
            strcpy
            用于字符串copy,遇到‘\0’,將結(jié)束。

            如果你理解了這些,你應(yīng)該知道他們的區(qū)別:例如你初始化某塊空間的時(shí)候,用到memcpy,那么應(yīng)該怎么寫,是不是顯得很笨。
              int  m[100]
            memset((void*)m,0x00,sizeof(int)*100);//Ok

            memcpy((void*)m,"\0\0\0\0....",sizeof(int)*100);//it’s wrong.

            Feedback

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2006-03-11 22:23 by nanami
            如果在win32編程,最好還是用ZeroMemory(const void *, size_t)來(lái)清空內(nèi)存更方便。

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2006-03-12 09:38 by 天涯浪子
            不好意思,我用的是UNIX操作系統(tǒng),所以,我寫的程序是在unix操作系統(tǒng)下調(diào)試的.

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2006-03-12 12:29 by fiestay
            int m[100]
            memset((void*)m,0x00,sizeof(int)*100);//Ok!

            這個(gè)可以寫成

            int m[100] = {0};
            省去了memset這行代碼

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2006-03-13 09:54 by 小明
            memset,memcpy 和strcpy 的根本區(qū)別是三個(gè)不同的函數(shù),沒(méi)什么好比較的。

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2006-03-13 17:14 by 沐楓網(wǎng)志
            另外,strcpy建議不要使用,它很容易引起內(nèi)存溢出,從而受到黑客的攻擊。建議使用strncpy來(lái)代替。

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2006-03-13 22:47 by 浪子
            謝謝,另外,有位朋友說(shuō)memset的用法其實(shí)是不對(duì)的,清空和置零是不同的概念,改天我會(huì)傳個(gè)例子。

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2006-03-14 08:48 by 沐楓網(wǎng)志
            int m[100]
            memset((void*)m,0x00,sizeof(int)*100);
            ----------
            為什么不直接用:memset(m, 0, sizeof(m))?

            # re: Sql也可以這樣寫啊 Sban  回復(fù)  更多評(píng)論   

            2006-03-21 15:42 by sban
            我今天寫了一個(gè)Sql語(yǔ)句,沒(méi)有想到還可以這么用

            BaseCls.Sql = "Select * " +
            "From UserOrder " +
            "Where ID = " +
            "(Select Top 1 UserOrderID " +
            "From " + GameInfoTableName + " Where OrderStateID = (Select top 1 ID From UserOrderState Where StateName = '接單員未通知用戶') " +
            "And UpdateTime = (Select Top 1 UpdateTime From " + GameInfoTableName + " Where UserOrderID = UserOrder.ID Order By UpdateTime DESC))";

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2008-01-03 15:38 by aaaaaaaaa
            aaaaaaaaaaaaaaaaaaaaaaaaa

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2008-01-03 15:38 by aaaaaaaaa
            asdfasdfadf

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2008-01-03 16:36 by aaaaaaaaa
            你只喜歡我微笑
            我卻只想你看好
            別人的事我不知道
            我只會(huì)讓你哭鬧

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2008-02-16 13:35 by pandaoknight
            恩 學(xué)了一學(xué)期c了 這寒假溫習(xí)一下時(shí) 又忘了不少
            謝謝摟住友提供了這篇文章 幫助我復(fù)習(xí)了一些函數(shù)

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2008-07-08 23:30 by 11
            0x00 是16進(jìn)制,代表空格吧不是0

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2008-08-07 11:59 by KondozShit
            @沐楓網(wǎng)志
            這里的int可以用你寫的code,因?yàn)閕nt4字節(jié)沒(méi)有char末尾有\(zhòng)0多一位的問(wèn)題.書本上的格式就是博主那種,所以很謹(jǐn)慎怕存在char array時(shí)的memset溢出問(wèn)題.

            至于某位評(píng)論看得我想鉆地...我在國(guó)內(nèi)剛學(xué)編程時(shí)也出現(xiàn)過(guò)那種={0}的丟人code...所以,在發(fā)評(píng)論前我是建議運(yùn)行一次,問(wèn)題就自然清楚了.

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2008-11-04 19:11 by zuogang
            @KondozShit
            這樣寫有什么問(wèn)題啊,呵呵,我想問(wèn)下,我是新手。char a[20]={0},我的是對(duì)的啊。數(shù)組的所有元素置為'\0'啊
            期待你的回復(fù)。謝謝
            zuogang_001@hotmail.com

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2010-02-08 22:19 by 安羽
            實(shí)驗(yàn)表明“char a[20]={0};”在window下的vc9編譯器下是正確工作的。
            沒(méi)有指明編譯器就指責(zé)“char a[20]={0};”是錯(cuò)誤,確實(shí)是“很丟人的”。
            zuogang這位仁兄即使是錯(cuò)誤,也沒(méi)有什么可丟人的,我們做開發(fā)近10年了,還有很多編程領(lǐng)域還是從未涉足的,犯下常識(shí)錯(cuò)誤也是有的,況且現(xiàn)在很多工具都是在發(fā)展中的,今天不支持特性明天升級(jí)后就可能支持了,軟件不就是人類為硬件創(chuàng)造的可擴(kuò)展的靈魂嗎?

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?  回復(fù)  更多評(píng)論   

            2010-02-21 13:52 by qiangqiang
            @沐楓網(wǎng)志
            sizeof(m) =4 sizeof(int)*100 = 400

            # re: memset ,memcpy 和strcpy 的根本區(qū)別?[未登錄](méi)  回復(fù)  更多評(píng)論   

            2011-12-12 17:03 by Victor
            @KondozShit
            “發(fā)評(píng)論前我是建議運(yùn)行一次”,這是非常錯(cuò)誤的。因?yàn)檫@只能證明說(shuō)你這種編譯器通過(guò),不能證明所有的編譯器都能通過(guò)。說(shuō)VC9通過(guò)了的那位,請(qǐng)問(wèn),gcc通過(guò)了嗎?Borland C 通過(guò)了嗎?Turbo C通過(guò)了嗎?因此,“發(fā)評(píng)論前我是建議運(yùn)行一次”是錯(cuò)誤的,應(yīng)該要查看ANSI/ISO標(biāo)準(zhǔn)文獻(xiàn)。

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            posts - 15, comments - 31, trackbacks - 0, articles - 13

            Copyright © 天涯浪子

            亚洲av成人无码久久精品| 国产亚洲综合久久系列| 久久99热这里只有精品国产| 精品午夜久久福利大片| 久久久亚洲精品蜜桃臀| 亚洲女久久久噜噜噜熟女| 久久人人爽爽爽人久久久| 国产综合成人久久大片91| 久久这里的只有是精品23| 看久久久久久a级毛片| 久久人妻少妇嫩草AV蜜桃| 欧美午夜精品久久久久免费视| 国产福利电影一区二区三区久久久久成人精品综合 | 久久精品一区二区三区中文字幕| 久久久久久久综合狠狠综合| 国产精品久久久久久久久| 亚洲人成无码www久久久| 国产一区二区精品久久 | 久久久久久亚洲Av无码精品专口 | 日韩av无码久久精品免费| 久久精品亚洲福利| 亚洲精品高清久久| 精品久久久久久久久午夜福利| 伊人久久一区二区三区无码| 国产999精品久久久久久| 久久精品无码午夜福利理论片| 久久香蕉国产线看观看猫咪?v| 伊人久久精品线影院| 国产精品久久久久久影院| 东方aⅴ免费观看久久av| 久久影视综合亚洲| 久久九九免费高清视频| 久久国产美女免费观看精品| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久精品中文闷骚内射| 久久精品国产亚洲αv忘忧草| 香蕉久久夜色精品国产2020| 一本一道久久a久久精品综合| 人妻系列无码专区久久五月天| 久久久精品无码专区不卡| 日韩十八禁一区二区久久|