給定乙個陣列,根據陣列名求陣列的長度

2021-08-07 21:59:31 字數 937 閱讀 2197

題目:給定乙個陣列名字,如何根據陣列名求陣列的長度?

本題來自於乙個同學筆試題,筆試中是實現乙個氣泡排序,但是排序的引數只有乙個陣列名,沒有陣列中元素的個數;void bubblesort(int a);

思路:要先實現這個氣泡排序,首先要獲取這個陣列中陣列元素的個數。然後對陣列排序,下面說一下如何根據陣列名獲取乙個陣列長度。

首先我們如果在區域性作用域中定義乙個陣列的話,獲取陣列中元素個數是很方便的:

int main(int argc, char * argv)

int len = 0;

len = (sizeof(array) / sizeof(array[0]));

cout << len << endl;

return 0;

}

//但是將陣列名作為引數傳遞到乙個函式中,這樣這個陣列名就退化成了乙個簡單的指標int*,此時sizoef(a)的值為4,顯然這種方法不能獲取陣列的長度。

但在c++中可以使用模板技術可以實現:

template int getarraylen(t& array)

int main(int argc, char * argv)

int len = 0;

cout << getarraylen(a) << endl;

return 0;

}

//在c語言中可以使用巨集定義來求:

#define getsize(a, len)

乙個關於陣列名的例題

原題 include int main int p1 int array 1 int p2 int array 1 char p3 null int a p1 2 p2 sizeof array sizeof p3 printf d a return 0 輸出 11其中部分疑問?include in...

陣列名和陣列名的取址

關於陣列名和指標的區別 推薦看這兩篇文章 示例 char a 3 輸出10進製位址 輸出 a 為 2686777 a 為 2686777 a是陣列名,編譯器處理時相當於陣列首元素的位址 a是乙個指向陣列的指標,值為陣列的位址,等於陣列首元素的位址 輸出 a 為 1 a 為 1 a 為 2686777...

指標 陣列 陣列名和陣列名取位址的區別

首先指標陣列 和陣列指標叫法本身是種誤導 指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointerto an array,即指向陣列的指標 其次他們本質乙個是陣列,乙個是指標 int a 4 表示是乙個陣列 陣列a中的元素都為int型指...