文章目录
- 初始化
- 赋值
- 判断是否为空:
- char*(字符指针)
- char[](字符数组)
- char a[] 和 char* 的区别
在C++中,char
类型可以用于存储单个字符。与之相关的还有char*
(字符指针)和char[]
(字符数组)。以下是这些类型的基础操作和它们之间的区别。
char
是一个存储单个字符的数据类型。
初始化
char ch = 'A'; // 初始化字符变量ch为'A'
char a[10] = "123";
or
char a[10] = "";
or
char a[10];
meset(a,0,sizeof(a));
赋值
ch = 'B'; // 将字符变量ch赋值为'B'
char a[10] = "";
string b = "string";
memcpy(a,b.c_str(),sizeof(a));
or
strcpy(a,b.c_str());
判断是否为空:
1.判断char第一个是否为\0
if (a[0] == '\0') {
cout << "1:字符串为空。"<< endl;
}
else {
cout << "1:字符串不为空。" << endl;
}
2.判断char长度是否得0
int b = strlen(a);
if (strlen(a)==0)
{
cout << "2:字符串为空。" << endl;
}
else {
cout << "2:字符串不为空。" << endl;
}
3.对比两个字符串是否相等
//strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。
//基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
if (strcmp(a,"")==0)
{
cout << "3:字符串为空。" << endl;
}
else {
cout << "3:字符串不为空。" << endl;
}
4.单个字符串
if (ch == '\0') { // 判断ch是否为空字符
// ch是空字符
}
char*(字符指针)
char*
是一个指向字符的指针,它可以指向字符串常量、字符变量或动态分配的字符数组。
初始化:
const char* str = "Hello"; // 指向字符串常量
char ch = 'A';
char* ptr = &ch; // 指向字符变量的地址
赋值:
ptr = "World"; // 使ptr指向新的字符串常量
判断是否为空:
if (ptr == nullptr) { // 判断ptr是否为空指针
// ptr是空指针
}
char[](字符数组)
char[]
是一个固定大小的字符数组,用于存储字符串。
初始化:
char str[] = "Hello"; // 初始化字符数组
赋值:
str[0] = 'J'; // 将字符数组的第一个字符赋值为'J'
判断是否为空:
if (str[0] == '\0') { // 判断字符数组是否为空字符串
// str是空字符串
}
char a[] 和 char* 的区别
-
char a[]
声明了一个字符数组,它有固定的大小,并且大小在编译时确定。 -
char*
声明了一个指向字符的指针,它可以指向任何地方,包括字符串常量、字符数组的首地址等。
示例:
#include <iostream>
int main() {
// char
char ch = 'A';
std::cout << "char: " << ch << std::endl; // 输出: A
// char*
const char* str = "Hello";
std::cout << "char*: " << str << std::endl; // 输出: Hello
// 修改char*指向的内容
// str[0] = 'J'; // 错误:str指向的是字符串常量,不能修改
// char[]
char strArray[] = "World";
std::cout << "char[]: " << strArray << std::endl; // 输出: World
// 修改char[]的内容
strArray[0] = 'W';
std::cout << "char[] after modification: " << strArray << std::endl; // 输出: World after modification
return 0;
}
在这个示例中,我们展示了char
、char*
和char[]
的基本操作。char
用于存储单个字符,char*
用于指向字符(通常是字符串),而char[]
用于存储字符串。注意,字符串常量是不可修改的,所以尝试修改char*
指向的字符串常量会导致编译错误。而char[]
是一个可修改的字符数组。