Expert C Programming读书笔记IV
来源:互联网 发布:软件系统报价单模板 编辑:程序博客网 时间:2024/05/16 01:46
Chapter 4 Arrays are not Pointers!
下列声明
extern int* p;
extern int q[];
有着不同的意思。前者声明了一个指向int的指针,后者定义了一个大小未定的数组,这个数组存放位置在另外的地方。、
Declaration and Definition
声明(Declaration)是指:指定变量的类型,用来“引用”不在本地的实际的变量
定义(Definition)是指:指定变量的类型,**并且为变量分配内存空间**,从而创建新的变量。
L-Value and R-Value
x=y, x-->L-Value while y-->R-Value
左值(L-Value)是指编译时就求得的量,事实上代表x存放的地址,用于存放y的的内容。
右值(R-Value)是指运行时求得的量,往往代表y的具体数值。
附注:有了左值右值的概念,就可以容易的理解C++语言中重载问题:
template <typename T>
class vector
{
public:
T& operator[](const index_type index);
const T& operator[](const index_type index) const;
};
因为左值是地址,这样当进行vector.operator[](xxx)=???的时候就能从T&和const T&中分辨出来左值和右值,进而进行不同的处理。
数组和指针的引用方式
数组是在编译时期就确定了首地址的变量,因而进行
a[i]
的时候,编译器将直接取得a的地址值,并且加上i*sizeof(typeof(a))的偏移,进而解引用。
而对指针,因为他指向地址的不确定性,所以要先确定指针本身的地址,再找到指向的地址,然后进行解引用。
用[]解引用一般指针
有时候有定义
char* a="abcdefg";
然后直接用a[i]解引用,这时首先找到a所在地址,然后求出a指向的地址,最后加上i*sizeof(typeof(char))的偏移。
声明与定义相匹配
对于数组声明和定义匹配:
extern int mango[]; // declaration
int mango[100]; // definition, allocate memory either on dseg or sseg
而指针:
extern int* raisin; // declaration
int* raisin; // definition
数组和指针的区别
数组:1.保存数据 2.直接访问数据,不经换算 3.用于储存给定长度的数据 4.自动分配释放资源 5.符号表上有记号
指针:1.保存地址 2.间接访问数据,需要换算 3.动态分配内存时使用 4.需要手工分配回收资源 5.常用于引用匿名数据
- Expert C Programming读书笔记IV
- Expert C Programming读书笔记
- Expert C Programming读书笔记III
- 读《expert c programming》
- Expert C Programming
- 《c expert programming》流水帐
- Expert C Programming阅读笔记
- 《Expert C Programming 》学习笔记
- From《Expert C Programming》01
- Something About Expert C Programming
- 《Effective C++》读书笔记IV
- Expert C Programming阅读笔记 2
- Expert C Programming阅读笔记V
- Expert C Programming阅读笔记VI
- Expert C Programming阅读笔记 VII
- Expert C Programming阅读笔记 VIII
- Expert C Programming阅读笔记 IX
- 《Expert C Programming》总结(一)
- 学习编程,培养兴趣,就从Hello World!开始吧
- JAVA 面试题
- 从MySQL导出导入数据库的命令
- [转]C语言宏定义技巧(常用宏定义)
- 中国债券市场发展大事记
- Expert C Programming读书笔记IV
- EditPlus的Win32语法文件
- JSP的九个隐含对象
- 关于软件架构、软件架构师、J2EE架构、.NET架构、SOA架构
- [转]C宏中"#"和"##"的用法
- BCB实现文件上传下载(转)
- 旅行商问题的n种解法
- ruby中的gc
- SOA架构概述