求陣列長度

2021-09-24 07:14:50 字數 1365 閱讀 4341

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 ...