C 中獲取靜態陣列和動態陣列的長度

2021-08-09 11:12:39 字數 1178 閱讀 1743

1.對於字串陣列,可以用strlen( )函式來獲取字串陣列的長度。如:

char a1 = "fwegwe";

cout << strlen(a1) << endl;

2.對於一般的陣列,如:int a[ ] =;

可以用sizeof(a)/sizeof(a[0])來獲取陣列的長度。

原理:sizeof()函式可以返回陣列所佔的記憶體,而sizeof(a[0])返回的是陣列第乙個元素所佔的記憶體。

所以式子:sizeof(a)/sizeof(a[0])得到的就是陣列的個元素個數,也就是陣列的長度。

在c++中,如果要多次獲取不同陣列的長度,為了避免重複寫**,可以定義乙個求陣列長度的模板。

template

int getlength(t& array)

以後再使用時用getlength( )函式即可得到陣列的長度。

int a = ;

cout << "陣列的長度為:"<<getlength(a)<< endl;

3.對於乙個一維動態陣列,可以使用.size()函式來獲取陣列的個數。

還是用上面的陣列a[ ],加入乙個判斷,將大於50的值存入動態陣列b。然後獲取b的大小。

下面是完整**:

#include "iostream""

#include "vector"

using namespace std;

template//定義獲取陣列大小的模板

int getlength(t& array)

int main()

;vec

torb

;   //建立動態陣列b

for (int i = 0; i < getlength(a); i++)

for (int i = 0; i < b.size(); i++)

cout <

靜態陣列和動態陣列的區別

靜態陣列在記憶體中位於棧區,是在定義時就已經在棧上分配了固定大小,在執行時這個大小不能改變,如 int a 10 在函式執行完以後,系統自動銷毀 動態陣列是malloc或者new出來的,位於記憶體的堆區,它的大小是在執行時給定,並且可以改變其,如 int a a new int 10 動態陣列,其建...

靜態陣列和動態陣列的區別

靜態陣列在記憶體中位於棧區,是在定義時就已經在棧上分配了固定大小,在執行時這個大小不能改變,如 int a 10 在函式執行完以後,系統自動銷毀 動態陣列是malloc或者new出來的,位於記憶體的堆區,它的大小是在執行時給定,並且可以改變其,如 int a a new int 10 動態陣列,其建...

C 中動態陣列 陣列引數

一 c 中的動態陣列 寫程式的時候,我在想動態陣列怎麼寫,new int,方括號中可以寫常量嗎,真是鬱悶,一些基本的知識都不記得,還是多練練吧。int pia new int 10 陣列的維數可以是任意的複雜表示式。delete pia 動態分配陣列時,陣列元素為類型別呼叫預設建構函式,內建型別的不...