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

strcpy()函数的有关问题

2012-05-05 
strcpy()函数的问题C/C++ code#includeiostreamusing namespace stdint main(){char * pchar a[10]p

strcpy()函数的问题

C/C++ code
#include<iostream>using namespace std;int main(){         char * p;     char a[10];    p = a;    cout<<p<<endl;    strcpy(p,"china");         cout<<"p"<<*p<<endl;    cout<<"p"<<p<<endl;    cout<<"p"<<p+1<<endl;    cout<<"p"<<*(p+2)<<endl;    cout<<"p"<<*(p+3)<<endl;    cout<<"p"<<*(p+4)<<endl;    return 0;}

上面代码执行后结果不正确
第一个P输出的是地址,strcpy后P却输出china为什么??百思不得其解,高手解释下,谢谢了

[解决办法]
p = a;
cout<<p<<endl; // a没有初始化,Debug下为0xcc。。。,中文应该是"烫"字+。。。
strcpy(p,"china");
cout<<"p"<<*p<<endl; //*p为数组的第一个元素,输出pc
cout<<"p"<<p<<endl; // 不解释,输出pchina
cout<<"p"<<p+1<<endl; // p+1执行a[1]的地址,输出phina
cout<<"p"<<*(p+2)<<endl; // *(p+2)为数组a[2]的值,输出pi
cout<<"p"<<*(p+3)<<endl; // 原因同上,为a[3]的值,输出pn
cout<<"p"<<*(p+4)<<endl; // 原因同上,为a[4]的值,输出pa

[解决办法]
探讨

我只想弄懂直接输出数组名int型数组和char型数组的不同
大哥能否详细说说内部的原因,劳驾了


引用:

stream类里的<<重载定义如此,对char*类型的操作数按指向字符串的指针看待。

热点排行