• <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>
            posts - 319, comments - 22, trackbacks - 0, articles - 11
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            C、C++中沒(méi)有提供直接獲取數(shù)組長(zhǎng)度的函數(shù),對(duì)于存放字符串的字符數(shù)組提供了一個(gè)strlen函數(shù)獲取長(zhǎng)度,那么對(duì)于其他類(lèi)型的數(shù)組如何獲取他們的長(zhǎng)度呢?其中一種方法是使用sizeof(array) / sizeof(array[0]), 在C語(yǔ)言中習(xí)慣上在 使用時(shí)都把它定義成一個(gè)宏,比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 。而在C++中則可以使用模板技術(shù)定義一個(gè)函數(shù),比如:

            template <class T>

            int getArrayLen(T& array)

            {

            return (sizeof(array) / sizeof(array[0]));

            }

            這樣對(duì)于不同類(lèi)型的數(shù)組都可以使用這個(gè)宏或者這個(gè)函數(shù)來(lái)獲取數(shù)組的長(zhǎng)度了。以下是兩個(gè)Demo程序,一個(gè)C語(yǔ)言的,一個(gè)C++的:

            P.S:若數(shù)組為存儲(chǔ)字符串的字符數(shù)組,則所求得的長(zhǎng)度還需要減一,即對(duì)于宏定義: #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]) - 1 );} ,對(duì)于函數(shù)定義:

            template <class T>

            int getArrayLen(T& array)

            {

            return (sizeof(array) / sizeof(array[0]) - 1);

            }

            原因?yàn)榇鎯?chǔ)字符串的字符數(shù)組末尾有一個(gè)'\0'字符,需要去掉它。

            【C語(yǔ)言】

            #include <stdio.h>

            #include <stdlib.h>

            #define GET_ARRAY_LEN(array,len){len = (sizeof(array) / sizeof(array[0]));}

            //定義一個(gè)帶參數(shù)的宏,將數(shù)組長(zhǎng)度存儲(chǔ)在變量len中

            int main()

            {

            char a[] = {'1','2','3','4'};

            int len;

            GET_ARRAY_LEN(a,len)

            //調(diào)用預(yù)定義的宏,取得數(shù)組a的長(zhǎng)度,并將其存儲(chǔ)在變量len中

            printf("%d\n",len);

            system("pause");

            return 0;

            }

            【C++】

            #include <iostream>

            using namespace std;

            template <class T>

            int getArrayLen(T& array)

            {//使用模板定義一個(gè)函數(shù)getArrayLen,該函數(shù)將返回?cái)?shù)組array的長(zhǎng)度

            return (sizeof(array) / sizeof(array[0]));

            }

            int main()

            {

            char a[] = {'1','2','3'};

            cout << getArrayLen(a) << endl;

            return 0;

            }


            C/C++中如何獲取數(shù)組的長(zhǎng)度?
            久久亚洲中文字幕精品一区| 久久久中文字幕| 欧美精品福利视频一区二区三区久久久精品| 久久香蕉综合色一综合色88| 少妇人妻88久久中文字幕| 精品无码久久久久国产| 久久午夜羞羞影院免费观看| 久久国产精品一区二区| 亚洲午夜无码AV毛片久久| 久久久无码精品亚洲日韩按摩| 青青草原精品99久久精品66| 久久人人爽人人爽人人AV东京热| 久久精品成人国产午夜| 久久一区二区三区99| 色综合久久中文字幕无码| 99久久精品国产综合一区| 一本一本久久A久久综合精品| 久久精品免费观看| 亚洲国产精品综合久久网络| 久久99国产精品尤物| 久久伊人五月丁香狠狠色| 91性高湖久久久久| 97久久超碰国产精品旧版| 伊人久久大香线蕉AV色婷婷色| 久久亚洲高清综合| 国产V亚洲V天堂无码久久久| 97久久婷婷五月综合色d啪蜜芽 | 欧美精品国产综合久久| 免费观看久久精彩视频| www性久久久com| 久久综合色老色| 久久久久18| 久久久久亚洲精品无码网址| 久久精品国产只有精品66 | 精品久久久久久久中文字幕| 日韩AV无码久久一区二区| 亚洲精品无码专区久久久| 中文精品久久久久人妻不卡| 亚洲色欲久久久综合网东京热| 狠狠综合久久综合88亚洲| 性做久久久久久久久浪潮|