读书人

请分析下下面代码输出结果咋回事

发布时间: 2012-06-03 16:59:40 作者: rapoo

请分析下下面代码输出结果怎么回事?

C/C++ code
#include<iostream>using namespace std;int main(void){    char a[2];    char *p =a;    for(int i =0 ;i<7;i++)    cout <<p+i  <<"\t长度:" <<strlen(p+i) <<endl;    return 0;}


运行结果如下

其中那个"烫"占2字节,被拆开的"汤"字是不是在内存中存储占1个字节?其他ASCII字符占一字节,怎么字符串长度总是多加1?还有显示的空格好像有2个等等

[解决办法]
用VC6的编译器确实是这样
因为在数组分配空间的时候 会分配倍数个空间 然后就有了八个这样的话 p+i就表示了起始地址
[解决办法]
P+0表示数组的起始地址即a[0],然后P+1则表示a[1]的地址,p+2和以后的都指向未知的内存空间。
[解决办法]
越界了还看什么看.
[解决办法]
不要玩这种,vs和g++不一样的
[解决办法]
基本是在错误的情况下分析错误的现象

读书人网 >C++

热点推荐