📅  最后修改于: 2023-12-03 15:29:49.224000             🧑  作者: Mango
char*
的长度在C++中,char*
是一个指向字符数组的指针。由于字符数组是以'\0'
(空字符)结尾的,因此可以使用strlen()
函数来计算其长度。
以下是一个简单的示例程序:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[] = "Hello World!";
char* p = str;
cout << "Length of str: " << strlen(str) << endl;
cout << "Length of p: " << strlen(p) << endl;
return 0;
}
输出:
Length of str: 12
Length of p: 12
可以看到,无论是char[]
数组还是char*
指针,它们的长度都是相同的。
需要注意的是,如果char*
指针没有初始化或者指向的字符数组没有以'\0'
结尾,那么使用strlen()
函数计算长度是不安全的。此时应该考虑使用strnlen()
函数来限制最大的字符数。
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[] = {'H', 'e', 'l', 'l', 'o', '\0'};
char* p = str;
char* q = "World";
cout << "Length of str: " << strlen(str) << endl;
cout << "Length of p: " << strlen(p) << endl; // 不安全
cout << "Length of q: " << strlen(q) << endl;
cout << "Length of q (max 3): " << strnlen(q, 3) << endl; // 最多只计算3个字符
return 0;
}
输出:
Length of str: 5
Length of p: 5 // 不安全
Length of q: 5
Length of q (max 3): 3
总之,char*
的长度需要通过strlen()
函数计算,但是需要注意初始化和结尾字符的问题。