辐射4 4g内存:C++中的一个小问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/08 17:31:57
#include <iostream.h>
void main()
{
static char t[][3][5]={"abcd","efgh","ijkl","mnop","qrst","uvwx"};
cout<<**t+1;
}
为什么输出的结果是bcd?
请详细解释,谢谢!

static char t[][3][5]={"abcd","efgh","ijkl","mnop","qrst","uvwx"};

在内存中,这组变量是以如下方式存放的:
abcd\0efgh\0ijkl\0mnop\0qrst\0uvwx\0

这里,**t="abcd",**(t+1)="efgh",依此类推;
其中,**t[0]='a',**t[1]=**t+1='b',
"cout<<**t+1;"表示从地址**t+1开始(也就是从b开始)输出**t这个字符串,字符串遇'\0'结束,所以得到的结果是bcd.

多谢加分:)

char t[][3][5]={"abcd","efgh","ijkl","mnop","qrst","uvwx"};

说明t是一个2*3的字符串数组,字符串长度为4,末尾是一个\0.
所以,**t是"abcd",又因为按字符串输出,即输出到\0结束,**t+1 就是"bcd".

visual c++只是c++的开发工具,c++才是语言.