第四章
令人震惊的事实:数组和指针并不相同
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
还有些问题,关于基础的c,比如const,volalite 的具体的意义,sizeof 等的意思?
还有就是extern 的问题,在c里可以不说明,但是在c++里为什么就必须说明呢?因为.....
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
错误的说法:“数组定义等于指针的外部声明”
为什么人们认为指针和数组始终应该是可以互换的呢?答案是对数组的引用总是可以写出对指针的引用,而且
确实存在一种指针和数组的定义完全相同的上下文环境。不幸的是这只是一种极为普通的用法,而并非所有的
情况下都是如此。
回顾两个术语:
定义: 只能够出现在一个地方 确定对象的类型并分配内存,用于创建新的对象
声明: 可以多次出现 描述对象的类,用于指代其它地方定义的对象
小启发
声明相当于普通的声明:它所说明的并非自身,而是描述其他地方创建的对象。
定义相当于特殊的定义:它为对象分配内存
。。。。。。。。。。。。
左值和右值的区别(p83)
左值在编译时可知,右值在运行时可知
可修改的左值(一般的指针)和不可修改的左值(数组名)
。。。。。。。。。。。。
还有一种发生莫名错误的可能——当你“定义为指针,但是以数组方式引用时”(p85)
指针数组的区别:
如果指针有一个下标[I],就把指针的内容叫上I作为地址,从中提取数据。。。。。。
在ANSI C 中,初始化指针是所创建的字符串常量被定义为只读。
与指针相反,由字符串常量初始化的数组是可以修改的。
阅读(952) | 评论(0) | 转发(0) |