C++数组指针区别

数组和指针都是C/C++中常用的类型,它们经常会引起混淆。下面我将通过几个方面阐述数组和指针在C++中的主要区别。

一、定义方式不同

数组是一组相同类型变量的集合,通过中括号定义:

int arr[10]; 

指针是一个变量,用于存储另一个变量的地址:

int* p; // p是一个指针变量

二、内存分配不同

数组在栈中分配一段连续内存块:

arr: [1, 2, 3, 4]

指针只是一个地址变量,初始化时可以指向堆或栈对象。

三、访问方式不同

数组通过下标访问元素值:

int val = arr[2];

指针通过解引用操作符*访问指向对象:

int val = *p; 

四、算术运算不同

对数组的算术运算是非法的。

指针支持+、-、++等算术运算,用于指针偏移。

五、参数传递不同

数组作为参数会进行值拷贝:

void func(int arr[]);

指针只传递地址,没有复制开销。

六、常见误区

数组名不是指针,但可以隐式转换为指向第一个元素的指针。

综上所述,数组与指针是不同的类型,应当理解其中的区别,才能在C++中合理应用。