C++字符指针常用写法
case 1 不指定数组大小,直接用字符赋值
char ch[] = {"abcdefg"};
cout<<ch<<endl; // 输出 abcdefg
cout<<strlen(ch)<<endl; // 输出 7, strlen 输出的是字符长度
cout<<sizeof(ch)<<endl; // 输出 8,sizeof 输出的是变量实际所占空间的长度,字符数组最后一个元素 \0 占一个空间
case 2 遍历字符数组 or char*
方式1
for (int i = 0; i < strlen(ch); i++) {
cout<<ch[i]<<" ";
}
cout<<endl;
方式2
for (int i = 0; i < strlen(ch); i++) {
cout<<*(ch + i)<<" ";
}
cout<<endl;
方式3
while (*(ch + i) != '\0') {
cout<<*(ch + i)<<endl;
i++;
}
case 3 动态申请 char 数组
char *ch = new char[11];
cout<<strlen(ch)<<endl; // 输出 0
cout<<sizeof(ch)<<endl; // 输出 8 ,此时ch是指针地址,不管ch里面是否填充了字符,它的大小适中为 8
char *ch = new char[11];
ch[0] = 'a';
ch[1] = 'b';
cout<<strlen(ch)<<endl; // 输出 2
cout<<sizeof(ch)<<endl; // 输出 8
case 4 先申请固定大小的空间,再遍历赋值
法1 申请空间,用new。
略
法2 不使用new去动态申请,直接固定好大小
需要注意的是,最后要给 ‘\0’ 保留一个位子,不然输出的结果就会错误
char ch[10];
cout<<strlen(ch)<<endl;
cout<<sizeof(ch)<<endl;
for (int i = 0; i < sizeof(ch) - 1; i++) { // size 注意减1
ch[i] = i + '0';
}
//ch[10 - 1] = '\0'; // 可以不写,系统会自动添加
cout<<ch<<endl; // 输出 012345678
return 0;