C/C++中獲取數組/字符串/向量長度的方法總結


做leetcode默認是寫函數,當出現關於數組的題目時,一般來說C++傳入類型是vector,C傳入類型是int型數組或char型數組,同時也需要知道數組的長度,在此一並總結。

1.非字符串數組:

sizeof(array) / sizeof (datatype)

注意如果用指針作為實參傳入函數,sizeof(array)的值將出錯,變為所指地址的值的長度

在C中可以用宏定義

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

在C++中可以用全局變量

template <class T>

int getArrayLen(T& array)

{

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

}

2.字符串數組char*

(1)使用sizeof()

sizeof(array)-1

(2)使用strlen(),計算字符開始直到第一個\0出現

(3)使用.size(),類似sizeof

有一些注意點:

char* ss = "0123456789";

sizeof(ss) 結果 4 ===》ss是指向字符串常量的字符指針

sizeof(*ss) 結果 1 ===》*ss是第一個字符

char ss[] = "0123456789";

sizeof(ss) 結果 11 ===》ss是數組,計算到/0位置,因此是10+1

sizeof(*ss) 結果 1 ===》*ss是第一個字符

char ss[100] = "0123456789";

sizeof(ss) 結果是100 ===》ss表示在內存中的大小 100×1

strlen(ss) 結果是10 ===》strlen是個函數內部實現是用一個循環計算到/0為止之前

int ss[100] = "0123456789";

sizeof(ss) 結果 400 ===》ss表示再內存中的大小 100×4

strlen(ss) 錯誤 ===》strlen的參數只能是char* 且必須是以'/0'結尾的

char q[]="abc";

char p[]="a/n";

sizeof(q),sizeof(p),strlen(q),strlen(p);

結果是 4 3 3 2 

 

3.vector向量

相對簡單方便,直接用

vector.size()

 

4.string類

string.size()
string.length()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM