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