1、在C++中,当且仅当在函数头或者函数原型中,int *arr 和int arr[ ] 含义是相同的。它们意味着arr是一个int类型指针,数组表示法int arr[ ]提醒用户,arr不仅指向int,还指向int 数组的第一个int。
2、当指针指向数组的第一个元素时,用数组表示法,当指针指向一个独立的值,使用指针表示法,而且,在其他上下文中, int *arr 和 int arr [ ]含义是不同的,例如不能在函数体内使用 int tip [ ] 来声明指针。
3、恒等式:
arr [ i ]= * (arr + i);
&arr [ i ]= arr + i;
4、函数调用 int sum_arr(int arr [ ],int n) ,将数组第一个元素地址和数组中的元素数目传递给函数,函数将数组的地址给指针变量arr,将元素数目赋给变量n ,这意味着,并不是将数组内容传递给函数,而是将数组的地址和包含的元素种类(类型)以及元素数目(n)提交给函数。有了这些信息之后,函数便可以使用原来的数组,传递常规变量时,函数将使用该变量的拷贝;但是传递数组时,函数将使用原来的数组,实际上,这不违反C++按值传递的方法,函数仍传递了一个值,这个值将赋给一个新的变量,但这个值是一个地址,而不是数组的内容。
5、将数组地址作为参数可以节省复制整个数组所需的时间和内存。如果数组很大,使用拷贝的系统开销将非常大,程序不仅需要更多的计算机内存,还需要花费时间来复制大块的数据。另外,使用原始数据增加了破坏数据的风险。