C++数组名和指针的区别
来源:互联网 发布:上海万户网络怎么样 编辑:程序博客网 时间:2024/06/07 09:55
大多数情况下,数组名的操作和指针的操作都相同,不过,两者并不是完全相同,下面就是一些区别:
1. 数组名是常量,指针是变量
数组名不能进行运算,而指针可以进行运算,如
int *p;p++;2. sizeof执行的结果不同
#include <iostream>#include <stdio.h>using namespace std;int main(){ const int size = 50; int sizeTest[size]; int* pTest = new int [30]; printf("Length of array sizeTest is %lu\n", sizeof(sizeTest)); printf("Length of int is %lu\n", sizeof(int)); printf("Length of pointer pTest is %lu\n", sizeof(pTest)); pTest = sizeTest; printf("Length of pointer pTest is %lu\n", sizeof(pTest));}
运行结果如下,从中可以看出sizeof针对指针得到的是指针类型的字节长度,对数组名得到的是数组的长度,正因如此,如果函数的形参是个数组,实参传递数组名的话,其实传递的是该实参数组第一个元素的地址,则在函数中对该数组执行sizeof无法得到该数组的长度,这点需要特别注意。
3. 取地址的结果不同
数组名虽然代表数组第一个元素的地址,但是对数组名取地址,得到的是长度和数组内存长度相等的内存块地址,每次加1时,内存地址将增加对应数组的内存长度,如
int arr[50];int **p = &arr;//&arr + 1时,内存地址增加200,而不是增加4;&arr[0] + 1时,内存地址增加4; arr不能加1,因为数组名是常量
0 0
- c/c++数组名和指针的区别(数组名可不是简单的指针,误区)
- C语言中数组名和指针的区别
- C/C++中,数组名和指针的区别
- C/C++中,数组名和指针的区别
- C语言中数组名和指针的区别
- C数组名与指针的区别
- 【C++】指针,数组名,引用的区别
- 数组名和指针的区别
- 数组名和指针的区别
- 数组名和指针的区别
- 数组名和指针的区别
- 数组名和指针的区别
- 数组名和指针的区别
- 指针和数组名的区别
- (转)数组名和指针的区别
- 指针和数组名的区别
- 数组名和指针的区别
- 数组名和指针的区别
- CacheJob
- React-基于React & Reflux 的评论框组件 (ES6)
- 15-操作码OpCode
- uva 10664 Luggage
- Access数据库从入门到进门——基础操作篇
- C++数组名和指针的区别
- 16-PHP里的opcode
- 17-解释器的执行过程
- HDU 5640 King's Cake
- SAS 免更改日期启动批处理文件
- 只有当一个类被用来作为基类的时候,才把析构函数写成虚函数.
- 18-变量概述
- K 均值聚类算法-C#
- csrf攻击