C++中如何使用星号访问char*数组指定字符串的剩余字符?
用星号访问字符串剩余字符的方法
好问题!咱们来梳理下怎么用星号操作符访问strings_array[2]里除第一个字符外的剩余内容~
首先得明确:strings_array[2]是一个指向字符串"shizuka"首字符的指针,*strings_array[2]等价于strings_array[2][0],也就是取第一个字符s。要访问后面的字符,核心思路是移动指针后再解引用。
单个字符的访问
- 访问第二个字符(对应原代码的
strings_array[2][1]):可以写成*(strings_array[2] + 1)- 原理:
strings_array[2]是指向's'的指针,+1会让指针向后移动1个char的位置(因为char占1字节),指向'h',再用*解引用就拿到这个字符。
- 原理:
- 访问第三个字符:
*(strings_array[2] + 2),对应字符'i' - 以此类推,访问第n个字符(从0开始计数),就用
*(strings_array[2] + n)
遍历剩余所有字符
如果想一次性输出从第二个字符开始的全部内容,可以用循环配合指针:
// 从第二个字符开始的指针 char* current_ptr = strings_array[2] + 1; // 遍历直到遇到字符串结束符'\0' while (*current_ptr != '\0') { std::cout << *current_ptr; current_ptr++; // 指针向后移动一位 }
运行这段代码会输出hizuka。
小提示
另外提个细节:你原代码里把字符串字面量赋值给char*是不推荐的,因为字符串字面量是const类型的,修改它们会导致未定义行为。建议把数组声明改成:
const char* strings_array[100];
内容的提问来源于stack exchange,提问作者Aquarius_Girl
相关产品推荐
相关产品推荐

