新聞中心

        strlen與sizeof的區(qū)別

        作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
        1.sizeof操作符的結(jié)果類(lèi)型是size_t,它在頭文件中typedef為unsigned int類(lèi)型。
        該類(lèi)型保證能容納實(shí)現(xiàn)所建立的最大對(duì)象的字節(jié)大小。2.sizeof是算符,strlen是函數(shù)。

        3.sizeof可以用類(lèi)型做參數(shù),

        本文引用地址:http://www.104case.com/article/201611/322230.htm

        4.數(shù)組做

        5.大部分編譯程序在編譯的時(shí)候就把
        charstr[20]="0123456789";//str是編譯期大小已經(jīng)固定的數(shù)組
        inta=strlen(str);//a=10;//strlen()在運(yùn)行起確定
        intb=sizeof(str);//而

        6.strlen的結(jié)果要在運(yùn)行的時(shí)候才能計(jì)算出來(lái),是用來(lái)計(jì)算字符串的實(shí)際長(zhǎng)度,不是類(lèi)型占內(nèi)存的大小。

        7.sizeof后如果是類(lèi)型必須加括弧,如果是變量名可以不加括弧。這是因?yàn)?br />
        sizeofc;//變量名可以不加括弧

        8.當(dāng)適用了于一個(gè)結(jié)構(gòu)類(lèi)型時(shí)或變量,
        當(dāng)適用一靜態(tài)地空間數(shù)組,sizeof
        sizeof操作符不能返回動(dòng)態(tài)地被分派了的數(shù)組或外部的數(shù)組的尺寸

        9.數(shù)組作為參數(shù)傳給函數(shù)時(shí)傳的是指針而不是數(shù)組,傳遞的是數(shù)組的首地址,
        如:
        fun(char[8])
        fun(char[])
        都等價(jià)于fun(char*)
        在C++
        如果想在函數(shù)內(nèi)知道數(shù)組的大小,需要這樣做:
        進(jìn)入函數(shù)后用memcpy
        fun(unsigedchar*p1,intlen)
        {
        unsignedchar*buf=newunsignedchar[len+1]
        memcpy(buf,p1,len);
        }

        我們能常在用到sizeof
        看了上面的詳細(xì)解釋?zhuān)l(fā)現(xiàn)兩者的使用還是有區(qū)別的,從這個(gè)例子可以看得很清楚:

        harstr[11]="0123456789";//注意這里
        inta=strlen(str);//a=10;>>>>strlen計(jì)算字符串的長(zhǎng)度,以結(jié)束符
        i

        上面是對(duì)靜態(tài)數(shù)組處理的結(jié)果,如果是對(duì)指針,結(jié)果就不一樣了

        char*ss="0123456789";
        sizeof(ss)結(jié)果
        sizeof(*ss)結(jié)果

        另外,
        inta[3]={1,2,3};
        cout<<sizeofa/sizeof(typeid(a[0]).name());



        關(guān)鍵詞: strlensizeo

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 湘阴县| 蓝田县| 锦州市| 中阳县| 稻城县| 潜山县| 涪陵区| 彭阳县| 绍兴市| 鄢陵县| 普格县| 织金县| 兴海县| 庆阳市| 河曲县| 陆川县| 赫章县| 余庆县| 菏泽市| 庆阳市| 兴业县| 常德市| 长兴县| 晋州市| 西林县| 静安区| 和静县| 金寨县| 邢台市| 潞西市| 湘潭市| 延川县| 靖宇县| 镇坪县| 平乡县| 水城县| 广平县| 翁牛特旗| 汉川市| 兴仁县| 临高县|