C++中求數(shù)組長(zhǎng)度的方法詳解
C++中沒(méi)有直接提供求數(shù)組長(zhǎng)度的方法,提供了sizeof(),begin(),end()等方法,可以供求數(shù)組長(zhǎng)度使用。
可以通過(guò)兩種方式來(lái)求數(shù)組長(zhǎng)度,這里使用模版類。一個(gè)是使用sizeof()做除法,另一種辦法是通過(guò)end(),begin()做減法。代碼如下。
#include <iostream> #include <string> using namespace std; template <class T> int getArrSize(T& arr){ return sizeof(arr) / sizeof(arr[0]); } template <class T> int getArrLength(T& arr){ return end(arr) - begin(arr); } int main(){ string arr[] = {"a","b","c","e","f"}; int arr2[] = {1,3,4,5}; //string arr cout<<"sizeof(arr): "<<sizeof(arr)<<endl; cout<<"sizeof(arr[0]): "<<sizeof(arr[0])<<endl; cout<<"end(arr): "<<end(arr)<<endl; cout<<"begin(arr): "<<begin(arr)<<endl; cout<<"size of arr: "<<getArrSize(arr)<<endl; cout<<"length of arr:"<<getArrLength(arr)<<endl; //int arr cout<<"===================="<<endl; cout<<"sizeof(arr): "<<sizeof(arr2)<<endl; cout<<"sizeof(arr[0]): "<<sizeof(arr2[0])<<endl; cout<<"end(arr): "<<end(arr2)<<endl; cout<<"begin(arr): "<<begin(arr2)<<endl; cout<<"size of arr: "<<getArrSize(arr2)<<endl; cout<<"length of arr:"<<getArrLength(arr2)<<endl; return 0; }
運(yùn)行結(jié)果如下:
sizeof(arr): 120
sizeof(arr[0]): 24
end(arr): 0x7fff5a35b5d8
begin(arr): 0x7fff5a35b560
size of arr: 5
length of arr:5
====================
sizeof(arr): 16
sizeof(arr[0]): 4
end(arr): 0x7fff5a35b560
begin(arr): 0x7fff5a35b550
size of arr: 4
length of arr:4
對(duì)于第一種求數(shù)組長(zhǎng)度的辦法,可能不是很明白,為什么需要sizeof()之后,需要除以sizeof(arr[0])。這里有幾點(diǎn)需要注意:
1、sizeof不是函數(shù),是操作符,它是編譯時(shí)求一個(gè)類型所占的字節(jié)數(shù)。
2、sizeof(arr):以長(zhǎng)度4的int數(shù)組為例,其實(shí)求出了int類型數(shù)組所占總長(zhǎng)度4*4=16。然后需要按照任意一個(gè)類型長(zhǎng)度其實(shí)就是4來(lái)做除法。
到此這篇關(guān)于C++中求數(shù)組長(zhǎng)度的方法詳解的文章就介紹到這了,更多相關(guān)C++中求數(shù)組長(zhǎng)度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++?move()函數(shù)及priority_queue隊(duì)列使用記錄
move(obj)函數(shù)的功能是把obj當(dāng)做右值處理,可以應(yīng)用在對(duì)象的移動(dòng)上,這篇文章主要介紹了C++?move()函數(shù)及priority_queue隊(duì)列使用記錄,需要的朋友可以參考下2023-01-01C++ 靜態(tài)成員的類內(nèi)初始化詳解及實(shí)例代碼
這篇文章主要介紹了C++ 靜態(tài)成員的類內(nèi)初始化詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02C/C++實(shí)現(xiàn)的游戲角色名稱名字隨機(jī)生成代碼
這篇文章主要介紹了C/C++實(shí)現(xiàn)的游戲角色名稱名字隨機(jī)生成代碼,本文特別針對(duì)一些古典游戲的角色名稱進(jìn)行隨機(jī)生成,需要的朋友可以參考下2015-05-05

C++?數(shù)據(jù)結(jié)構(gòu)超詳細(xì)講解順序表

如何通過(guò)UltraEdit解析BMP文件內(nèi)部結(jié)構(gòu)(BMP位圖基礎(chǔ))

C++隱式類型轉(zhuǎn)換運(yùn)算符operator type()用法詳解