char s[]="aaaa";char *ps=s; 那么cout

时间:2020-12-31 11:28:52
这里的指针ps不是指向字符数组中第一个元素莫?
*ps输出a我能理解。为什么ps会输出aaaa?
string s="aaaa"
string ps=&s;
输出ps指的字用*ps行。也不能用ps输出啊。咋char 能。有什么区别啊?

9 个解决方案

#1


输出遇到'\0'结束

#2


字符串撒

cout<< ps; 输出ps指向的字符串
cout<< *ps; 输出ps指向的字符

#3


因为 char *ps
所以 ps是指针,cout输出遇到'\0'结束,而  *ps是char

#4


没搞明白。
说白了就是指向 string s="aaaa"与char c[]="aaaa"
的两个指针为什么第一个不能用指针名输出 "aaaa"
而第二个却能?
*p=s p 指向 "aaaa"的地址
*p=c p指向数组中第一个元素的地址

咋第二个直接用p能输出"aaaa"而第一个不行?
我刚学C++。麻烦。详细点。呵呵
按我的理解。第一个都不能。哪第二个也不能啊?

#5


>>>ckt1120 
///////////

char s[]="aaaa";
char *ps=s; 

这里ps不是指向 s[]的第一个元素莫?

#6


不能 *p=s 
s.c_str()

#7


string不等同于字符串数组,要获得string包含的字符串指针需要调用c_str方法
string s = "aaaa";
char* p = s.c_str();
cout << p;就输出"aaaa"

#8


有点小问题, c_str()返回const char*,所以上面的p需要声明为const char* p

#9


建议换个支持标准C++的编译器

#1


输出遇到'\0'结束

#2


字符串撒

cout<< ps; 输出ps指向的字符串
cout<< *ps; 输出ps指向的字符

#3


因为 char *ps
所以 ps是指针,cout输出遇到'\0'结束,而  *ps是char

#4


没搞明白。
说白了就是指向 string s="aaaa"与char c[]="aaaa"
的两个指针为什么第一个不能用指针名输出 "aaaa"
而第二个却能?
*p=s p 指向 "aaaa"的地址
*p=c p指向数组中第一个元素的地址

咋第二个直接用p能输出"aaaa"而第一个不行?
我刚学C++。麻烦。详细点。呵呵
按我的理解。第一个都不能。哪第二个也不能啊?

#5


>>>ckt1120 
///////////

char s[]="aaaa";
char *ps=s; 

这里ps不是指向 s[]的第一个元素莫?

#6


不能 *p=s 
s.c_str()

#7


string不等同于字符串数组,要获得string包含的字符串指针需要调用c_str方法
string s = "aaaa";
char* p = s.c_str();
cout << p;就输出"aaaa"

#8


有点小问题, c_str()返回const char*,所以上面的p需要声明为const char* p

#9


建议换个支持标准C++的编译器