如何访问指针数组中字符串的各个元素

How can i access individual elements of a string in an array of pointers?

本文关键字:字符串 元素 数组 指针 何访问 访问      更新时间:2023-10-16
#include<iostream>
using namespace std;
main()
{
  char *p[4] = {"arp","naya","ajin","shub"};
  cout<<*p[2];    // How is this printing 'a' 
                  // how can i print the elements of each of the 4 strings 
                  // except the first character

}

访问http://cpp.sh/7fjbo我在理解用字符串处理指针时遇到了很多问题。如果你能提供帮助,请发布一些额外的链接。我最关心的问题是不支持使用带指针的数组。

p[2]是指向"ajin"的第一个元素的指针。当你取消引用它时,你会得到a。如果你想打印所有的,使用指针本身

cout << p[2];

如果您想跳过第一个字符,请将指向第二个字符的指针传递给cout,即

cout << p[2] + 1;

这里,p基本上是数组长度为4的字符串指针数组。

*p[2]p[2][0] 相同

p[2]与"从索引0开始打印,直到编译器找到''"相同

p[2] + i与"从索引i开始打印,直到编译器找到''">

相同

除了Armen的答案之外,还有更多信息可以让您更好地理解。

C++是而不是正是C;它是一种强类型语言。在C中,使用char *表示以null结尾的字符串。但实际上,它意味着是指向字符类型的指针。C++是强类型的,正在调用

std::ostream& std::ostream::operator<<(std::ostream& cout, char);

带有

cout << *p[2];

因为第二操作数是CCD_ 13类型。

在C++中,您可能希望使用std::string而不是char*,因为前者更安全,界面更简单。有关详细信息,您可以参考C++中为什么您更喜欢char*而不是字符串?