编程专栏 2011-02-28 08:30 采纳率: 0%
浏览 216
已采纳

C程序的一个小问题

[code="java"]
void main()
{
char str = "china";
printf("%c\n",str[1]);
//
(str+1) = *(str+2); // 在vc6.0下运行时出错,不明白是什么原因
puts(str);
}

在winTc下是没问题的,在vc6.0下编译和链接都没问题,但是运行的时候,注释的那行出错了,不明白是什么原因,请各位给个提示,谢谢!
[/code]

  • 写回答

2条回答 默认 最新

  • wen563412561 2011-03-01 23:58
    关注

    嗯,以下是我的理解:
    因为创建数组是不会共享同一个内存空间的!所以即使数组内容一样,也不会存储在同一空间中,除非你刻意赋值!我上面举得例子是:char *x = "xxxxxx"这样的声明,是会共享同一个内存空间,说得明白一点是,举个例子:
    char *ptr = "chinc" ;
    char *ptr1 = "chinc" ;
    printf("%d,%d\n",ptr,ptr1) ;
    printf("%d\n",&"chinc") ;
    上面输出地值是全部相同的,意思是chinc这个字面字符串就是可以被共享的!下次再出现这个字面字符串时就不用再创建了!就直接到指定的内存中读取就可以!但对于数组却不会,这点你可以自己做实验。
    额,可能说的不太明白,呵呵,也许是我的水平有限!!

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

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条