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

一、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

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


从汇编的角度来看,指针是这样的
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++; // 错误

“指针和数组等价”说的是什么索引操作相同,例如: p[2]; a[2];

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/46571c53868fb2af6fd87e58462813fd.html