首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-06-03 
请分析下下面代码输出结果怎么回事?C/C++ code#includeiostreamusing namespace stdint main(void){cha

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

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++不一样的
[解决办法]
基本是在错误的情况下分析错误的现象

热点排行