📜  c++ char* 的长度 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:49.224000             🧑  作者: Mango

C++ 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()函数计算,但是需要注意初始化和结尾字符的问题。