函数和一维数组
# include <iostream>
using namespace std;
const int ArSize = 8;
int sum_arr(int arr[], int n);//正确的函数原型
int main()
{
int cookies[ArSize] = {1, 2, 4, 8, 16, 32, 64, 128};
int sum = sum_arr(cookies, ArSize);
cout << "Total cookies eaten: " << sum << endl;
return 0;
}
int sum_arr(int arr[], int n)
{
int total = 0;
for(int i = 0; i < n; i++) total += arr[i];
return total;
}
在C++中,当且仅当用于函数头或函数原型时,int * arr 和 int arr[ ]的含义才是相同的,它们都意味着arr是一个int指针。
当指针指向数组的第一个元素时,使用数组表示法;而当指针指向一个独立的值时,使用指针表示法 。
将数组地址作为参数可以节省复制整个数组所需的时间和内存
两个重要的恒等式:
- arr[i] = *(arr + i)
- &arr[i] = &*(arr + i) = arr + i
函数和二维数组
int data[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int total = sum(data, 3);
//正确的函数原型
int sum(int arr[][4], int size);
int sum(int (*arr)[4], int size);