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

时间:2016-08-02 14:04:17

标签: c++

#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 我在理解字符串指针的处理方面遇到了很多问题。如果您可以提供帮助,请发布一些其他链接。不言而喻,使用带指针的数组是我最关心的问题。

3 个答案:

答案 0 :(得分:3)

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

cout << p[2];

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

cout << p[2] + 1;

答案 1 :(得分:1)

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

*p[2]p[2][0]

相同

p[2]与&#34相同;从索引0开始打印,直到编译器找到'\0'&#34;

p[2] + i与&#34相同;从索引i开始打印,直到编译器找到'\0'&#34;

答案 2 :(得分:0)

除了亚美尼亚的答案之外,还有更多信息可以帮助您更好地理解。

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

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

cout << *p[2];

因为第二个操作数的类型为char

在C ++中,您可能希望使用std::string而不是char*,因为前者更安全且界面更简单。有关详细信息,请参阅Why do you prefer char* instead of string, in C++?