设为首页 加入收藏

TOP

C/C++中数组与指针的关系理解(二)
2017-04-14 10:23:36 】 浏览:593
Tags:C/C 指针 关系 理解
(被追加了'\0')的字符数组,其用于初始化另一个数组a时不会发生转换。这就是所谓的用于初始化数组的串字面量不会decay


第二行代码中的串字面量同第一行中的一样,也是一个长度为4的字符数组,只是是否和上一行的是同一个就不得而知了,C标准没有规定。这个字符数组此刻并未用于初始化一个数组,所以它被转换为指向其首元素的指针,然后用于初始化另一个指针p了。


所以第一行可以认为是用数组初始化数组,第二行是用指针初始化指针。不过因为转换规则的存在,可用于初始化数组的“数组”仅限于串字面量。


第三行很好理解,a是我们新初始化的一个数组,和初始化它的串字面量已经是两回事了,所以修改a是合法的操作。但是第四行在大多数系统中会报错,因为p指向的是一个串字面量,对串字面量的修改行为未被C标准所定义,因为串字面量本质是即一个静态存储周期的字符数组,大多数系统对其有写保护因而修改出错。


如果尝试将串字面量作为 sizeof 、_Alignof 和 & 这3个操作符的操作数,我们发现这个“字符数组”也没有转换。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言动态内存分配之malloc与real.. 下一篇C++设计成员变量可动态调整的动态..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目