注册 登录
编程论坛 C++教室

字符串输出问题,为什么会有这样的输出?

liudw2 发布于 2012-08-09 19:30, 424 次点击
程序代码:
#include <iostream>
using namespace std;
int main()
{
    char a[] = "liudw2";
    cout << a << endl;
    cout << a+1 << endl;//???为什么
    char* b = "liudw2";
    cout << *b << endl;
    cout << b << endl;
    return 0;
}
//结果:
/*
liudw2
  iudw2
  l
  liudw2
*/

7 回复
#2
peach54602012-08-09 21:17
a表示头指针...根据c专家编程的讲解...
a可以被自动转换成char*
#3
liudw22012-08-09 21:47
后来查书的时候看明白了,谢谢
#4
pangding2012-08-09 23:31
回复 3楼 liudw2
那你就应该自己解释解释,分享分享学习心得。也方便后来看帖的人学习。
#5
peach54602012-08-10 08:23
以下是引用pangding在2012-8-9 23:31:23的发言:

那你就应该自己解释解释,分享分享学习心得。也方便后来看帖的人学习。
我觉得我解释得很好咩...
#6
liudw22012-08-10 08:28
程序代码:
#include <iostream>
using namespace std;
int main()
{
    char a[] = "liudw2";
    cout << a << endl;//a1
    cout << a+1 << endl;//a2

    char* b = "liudw2";
    cout << *b << endl;//b1
    cout << b << endl;//b2
    cout << b+1 << endl;//b3
    cout << *(b+1) << endl;//b4
    return 0;
}
a1与b2的输出一样;
a2与b3的输出一样;
正如2楼所说的,a代表的是头指针,所以输出整个字符串,a+1则输出除a[0]外的所有字符串
#7
有容就大2012-08-12 08:32
*代表取对应地址的内容吧。
#8
语过添情88822012-08-17 19:36
刚开始学,不太懂
1