读书人

strcpy()函数的有关问题

发布时间: 2012-05-05 17:21:10 作者: rapoo

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*类型的操作数按指向字符串的指针看待。

读书人网 >C++

热点推荐