C++ 指针、数组和引用辨析

2014-11-24 08:52:04 来源: 作者: 浏览: 0

一、C++指针:内容是指示一个内存地址的变量;类型是指示编译器怎么解释指针内容指向地址中的内容,以及该内存区域有多大;


例子:


int i = 0;
int * pi = &i;
printf(“pi = %x \n”, pi); // 打印pi的内容: 0x2000
printf(“*pi= %d \n” , *pi); // 打印pi指向地址中的值: 5
printf(“&pi= %x \n”, &pi); // 打印pi的地址: 0x100




从汇编的角度来看,指针是这样的
int i = 0;
010E139E mov dword ptr [i],0
int * pi = &i;
010E13A5 lea eax,[i]
010E13A8 mov dword ptr [pi],eax


二、数组是一个单一数据类型对象的集合。其中单个对象没有被命名,通过索引访问。



数组名和指针的区别数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组。数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量。指向数组的指针则是另外一种变量类型,仅仅意味着数组的存放地址


注意:虽然数组名可以转换为指向其指代实体的指针,但是它只能被看作一个指针常量,不能被修改,如下:


int intArray[10];
intArray++; // 错误



-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: