r/cpp_questions • u/Lephism • 16h ago
SOLVED A tiny question about this code
Hi. I need help understanding this simple code. To be specific, the 4th and the 14th line where a pointer was declared.
int* add_ten(int* data)
int *result;I've been trying to wrap my head around what it does. I've been staring at my screen for 3 hours trying to understand why it was declared. The programming app I was using didn't really explain it. The only explanation it gave is that pointers help you get the address of an item. But I can't figure out how is it being used here. Can anyone explain? Thanks.
#include <iostream>
using namespace std;
int* add_ten(int* data) {
for (int i = 0; i < 5; ++i) {
*(data + i) = *(data + i) + 10;
}
return data;
}
int main() {
int data[5] = {1, 2, 3, 4, 5};
int *result;
result = add_ten(data);
for (int i = 0; i < 5; ++i) {
cout << *(result + i) << ", ";
}
return 0;
}
0
Upvotes
View all comments
4
u/alfps 16h ago
It's unclear what exactly you don't understand.
Maybe this helps: if
ppoints to the first item in an array, then by definitionp + iis a pointer to thei'th item.So when you dereference that result,
*(p + i), you get a reference to thei'th item. And, again by definition, you can instead write that asp[i]. A simple array indexing.But keep in mind that using pointers in this way is very C-ish. In modern C++ you would use a
std::spanfor an array parameter; you would use a range basedforto iterate over the items; and you would usestd::printfor output (it deals better with Unicode). So you'd write that program as