c++求陣列長度為:
int arr_length = sizeof(arr) / sizeof(arr[0]);
為了方便使用,在c語言中常定義巨集來求陣列長度
#define arr_len(array, length)
使用時,直接呼叫巨集函式即可,如
int arr=;
int len;
arr_len(arr, len); //此時len賦值為5
在c++中,也可以定義模板函式
template
int getarraylen(t &array);
int len=getarraylen(arr); //此時len賦值為5
// ************************** 注意!!!!******************************** //
當陣列傳入函式時,傳入的是指標,指標僅指向陣列頭arr[0],不帶有任何長度資訊,所以在傳入陣列時,要把陣列長度同時傳入函式。
可以考慮一下,下面這個函式呼叫時,會輸出什麼?
void length_array(int arr);
int arrlen = sizeof(array) / sizeof(array[0]);
cout << sizeof(array) << sizeof(array[0])<< arrlen << endl; //24 4 6
char aa = "abcdef";
cout << sizeof(aa) << sizeof(aa[0]) << sizeof(aa) << endl; //7 1 7
char str[20] = "0123456789";
int a = strlen(str); //a=10;
int b = sizeof(str); //而b=20;
cout << a << b << endl;
string str1 = "hello";
cout << str1.length() << str1.size() << endl; //55
cout << sizeof(str1) << endl;//28
cout << sizeof(string) << endl; //28 無論你的string裡放多長的字串,它的sizeof()都是固定的,字串所佔的空間是從堆中動態分配的,與sizeof()無關。
cout << str1.size() / str1.length() << endl;//返回位元組數
char* ss1 = "012345678";
cout << sizeof(ss1) << endl;//4
getchar();
return 0;
}
C 求陣列長度
c c 中沒有提供直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?其中一種方法是使用sizeof array sizeof array 0 在c語言中習慣上在 使用時都把它定義成乙個巨集,比如 define get arr...
c語言求陣列長度
c語言對於不同的資料型別的陣列求長度方式稍微有不同的地方 第一種使用strlen strlen 本質上是求位元組的個數,所以當有中文字元 占用位元組一般不為1 時,會產生差錯,而英文本元都是占用乙個直接,求位元組相當於求字元 include include intmain 輸出 第二種使用sizeo...
c 求陣列長度 和vector用法
int len sizeof arr size arr 0 1 vector int a 10 定義了10個整型元素的向量 尖括號中為元素型別名,它可以是任何合法的資料型別 但沒有給出初值,其值是不確定的。2 vector int a 10,1 定義了10個整型元素的向量,且給出每個元素的初值為1 ...