У меня два вопроса по поводу следующего кода, в частности, функция int sum(const int *begin, const int *end)
.Я не понимаю, что такое *p
и p
в этой функции?
Является ли *p
указателем в этой функции, а как насчет p
?p
переменная?Я читал, что: " В const int *p
, *p
(содержимое, на которое указывает), является постоянным, но p
не является постоянным. "
Я не совсем понимаюразница между *p
и p
в этой функции.
Мой второй вопрос: что является причиной объявления const
в: const int *p = begin
в цикле for int sum(...)
?Это потому, что в подписи int sum(...)
объявлено const
для: const int *p = begin
?Т.е. это потому, что begin
объявляется как нечто неизменяемое - поэтому в цикле for мы должны объявить begin
- неизменную константу, на которую указывает указатель *p
?
/* Function to compute the sum of a range of an array (SumArrayRange.cpp) */
#include <iostream>
using namespace std;
// Function prototype
int sum(const int *begin, const int *end);
// Test Driver
int main() {
int a[] = {8, 4, 5, 3, 2, 1, 4, 8};
cout << sum(a, a+8) << endl; // a[0] to a[7]
cout << sum(a+2, a+5) << endl; // a[2] to a[4]
cout << sum(&a[2], &a[5]) << endl; // a[2] to a[4]
}
// Function definition
// Return the sum of the given array of the range from
// begin to end, exclude end.
int sum(const int *begin, const int *end) {
int sum = 0;
for (const int *p = begin; p != end; ++p) {
sum += *p;
}
return sum;
}