请分析下下面代码输出结果咋回事
请分析下下面代码输出结果怎么回事?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++不一样的
[解决办法]基本是在错误的情况下分析错误的现象