我怎么知道C++数组的长度
How can I know legth of array in C++
我可能的重复项:
C 编程语言中数组的大小?
有一个字符数组,我想在一个函数中处理它,我尝试了这样的代码:
int main(){
char *word = new char [5];
/*here we make this word
....
*/
process(word);
puts(word);
}
void process(char *word){
int sizeOfWord = sizeof(word)-1;
/* here is cycle that process the word, I need it lenght to know how long cycle must be
.....
*/
}
但是我无法获得带有sizeof
数组的长度.为什么?我怎样才能得到它?
你不能。使用指针,无法知道大小。
你应该做的是,把word
的长度也传递给你的process
。
您应该知道数组和指针之间存在差异。数组确实是许多元素,因此数组sizeof
给出其大小(以字节为单位)。另一方面,指针只是一个地址。它甚至可能不指向数组。由于 sizeof
运算符是在编译时计算的(可变长度数组除外),因此它无法知道您的意思。
想想这个例子:
void process(char *word);
int main(){
char *word = new char [5];
char *word2 = new char [10];
process(word);
process(word2);
/* ... */
}
void process(char *word){
int sizeOfWord = sizeof(word)-1; // what should this be?
/* ... */
}
现在,知道在这种情况下sizeof
是在编译时计算的,您认为它应该获得什么值? 5
? 10
?
旁注:看起来您正在将此数组用作字符串。在这种情况下,您可以使用 strlen
.
U应该改用strlen()
。
编辑:假设您的word
是有效的单词,末尾带有