风雅_乌龟 2015-12-21 11:04 采纳率: 0%
浏览 1608
已采纳

一个关于VC6下strcpy函数的问题

#include
using namespace std;
#include
void main()
{
int b,b1,b2;
char p2[4];
char p[3]={"dsfs","jasa","ussg"};
int a1=1,a2=1;
strcpy(p2,
(p+a1));//同下
strcpy(*(p+a1),*(p+a2));//为什么运行这句会出现运行停止
strcpy(*(p+a2),p2);//同上
b=strlen(*(p+a1))-1;//但是为什么这两句又不会出错
b1=strlen(*(p+a2))-1;
b2=b>b1?b1:b;

for(int a4=0;a4<3;a4++){
cout<<*(p+a4)<<b<<" ";}
}

  • 写回答

9条回答 默认 最新

  • 纹枰老妖 2015-12-21 12:22
    关注

    题主,我又看了您在其它回答下面的回复,在这里帮您解惑一下。首先,strlen为什么不崩溃,这是因为strlen并不做修改等工作,它仅仅是为了统计长度,自然不会崩溃。 然后,像【char a[3] = "hu";】这种代码,a的地址是处于堆栈区的。打个比方,a的地址是1111,而那个【"hu"】所处的位置却是常量区【比如地址是9876】,那个【a[3] = "hu";】时会发生什么呢?程序会记住【"hu"】的地址9876,然后从这个位置开始,逐一拷贝字符内容到a地址1111上。。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥20 jupyter保存图像功能的实现
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键