Chinaunix首页 | 论坛 | 博客
  • 博客访问: 88293
  • 博文数量: 60
  • 博客积分: 4002
  • 博客等级: 中校
  • 技术积分: 645
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 18:11
文章分类

全部博文(60)

文章存档

2011年(60)

我的朋友

分类: C/C++

2011-03-31 15:24:22

以下的初始化有什么区别?
char a[] = "string literal"; char *p= "string literal"; 当我向p[i] 赋值的时候, 我的程序崩溃了。

    字符串常量有两种稍有区别的用法。用作数组初始值(如同在char a[] 的声明中), 它指明该数组中字符的初始值。其它情况下, 它会转化为一个无名的静态字符数组, 可能会存储在只读内存中, 这就是造成它不一定能被修改。在表达式环境中, 数组通常被立即转化为一个指针, 因此第二个声明把p 初始化成
指向无名数组的第一个元素。
    为了编译旧代码, 有的编译器有一个控制字符串是否可写的开关。
阅读(256) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~