C/C++中獲得數組長度的辦法示例。本站提示廣大學習愛好者:(C/C++中獲得數組長度的辦法示例)文章只能為提供參考,不一定能成為您想要的結果。以下是C/C++中獲得數組長度的辦法示例正文
學過C/C++的人都曉得,在C/C++中並沒有供給直接獲得數組長度的函數,關於寄存字符串的字符數組供給了一個strlen函數獲得其長度,那末關於其他類型的數組若何獲得他們的長度呢?
個中一種辦法是應用sizeof(array) / sizeof(array[0]), 在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])); }
如許關於一些簡略的數組可使用這個宏或許這個函數來獲得數組的長度了。
以下是兩個Demo法式,一個C說話的,一個C++的:
留意:若數組為存儲字符串的字符數組,即以雙引號括起來的字符串全體初始化的字符數組
例如:
char a[]="abcdefg"
或許
char a[]={"abcdefg"}
則所求得的長度為字符數組的長度,而不是對應的字符串的長度,請求字符串的長度還須要減一。緣由為存儲字符串的字符數組末尾有一個'\0'字符,須要去失落它。
關於下例:
char a[]="abcdefg"; sizeof(a)/sizeof(a[0])=8;
請求字符串長度的話應當減1.
但關於:
char a[]={'a','b','c','d','e','f','g'}; sizeof(a)/sizeof(a[0])=7
C說話實例以下:
#include <stdio.h> #include <stdlib.h> #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} //界說一個帶參數的宏,將數組長度存儲在變量len中 int main() { char a[] = {'1','2','3','4'}; int len; GET_ARRAY_LEN(a,len) //挪用預界說的宏,獲得數組a的長度,並將其存儲在變量len中 printf("%d\n",len); system("pause"); return 0; }
輸入成果為:4
C++實例以下:
#include <iostream> using namespace std; template <class T> int getArrayLen(T& array) //應用模板界說一個函數getArrayLen,該函數將前往數組array的長度 { return (sizeof(array) / sizeof(array[0])); } int main() { char a[] = {'1','2','3'}; cout << getArrayLen(a) << endl; return 0; }
輸入成果為:3