// This is an array which contains char pointers.
// These char pointers will be pointing to strings.
char* strings_array[100];
strings_array[0] = (char*)"anisha";
strings_array[1] = (char*)"kaul";
strings_array[2] = (char*)"shizuka";
strings_array[3] = (char*)"sharma";
// Access the whole 1st string.
std::cout << *strings_array;
// Access the whole 2nd string.
std::cout << strings_array[1];
以上就是我尝试过并且有效。 我想知道如何使用++运算符来获取第二个字符串。
将++作为strings_array
的前置或后置修复,会产生lvalue required error
。
答案 0 :(得分:3)
strings_array
声明如下:
char* strings_array[100];
是不可修改的左值,因此它不能成为++
运算符的操作数,因为它确实修改了它的操作数。
但是,您可以将ptr
定义为指向数组strings_array
的第一个元素的指针:
char **ptr = &strings_array[0];
此ptr
是可修改的左值,因此它可以成为++
的操作数。
答案 1 :(得分:1)
当我们在char数组数据类型中自动存储多个字符时,它是double dimension.char *是指向char数据类型的指针。** **是指向指针char的指针。我们已经声明了char * strings_array所以必须使用char **来存储char指针变量的地址。我们可以通过在char **变量中使用++运算符来递增地址,逐个访问字符串元素。
在我们的示例中,cpr是char **变量,最初存储char * strings_array的起始地址,cpr ++递增地址,因为cpr是char **,它存储char *的地址
#include <iostream>
using namespace std;
int main()
{
char* strings_array[100];
strings_array[0] = (char*)"anisha";
strings_array[1] = (char*)"kaul";
strings_array[2] = (char*)"shizuka";
strings_array[3] = (char*)"sharma";
cout <<"\n"<< *strings_array;
cout <<"\n"<< strings_array[1];
char **cpr=&strings_array[0];
cout<<"\n String Values using string pointer";
cout<<"\n------------------------------------";
for(int i=0;i<4;i++)
{
cout<<"\n"<<*(cpr);
cpr++;
}
return 0;
}
输出
anisha
kaul
String Values using string pointer
------------------------------------
anisha
kaul
shizuka
sharma
希望你理解这个概念。谢谢你