我正在自学 C++,并且对数组和指针有一些疑问。我的理解是数组实际上只是指针,但是,数组是不能更改 的地址常量。
如果是这种情况,我想知道为什么在我的函数中show2()
我能够更改指针的地址list
。与变量不同,我认为数组是通过引用传递的,所以我在调用函数时期待编译器错误,show2()
因为我增加了list
. 但是代码工作得很好。有人可以解释一下吗?
谢谢!
#include<iostream>
#include<iomanip>
using namespace std;
void show1(double *list, int SIZE)
{
for(int i=0; i < SIZE; i++)
{
cout << setw(5) << *(list+i);
}
cout << endl;
return;
}
void show2(double *list, int SIZE)
{
double *ptr = list;
for(int i=0; i < SIZE; i++)
cout << setw(5) << *list++;
cout << endl;
return;
}
int main()
{
double rates[] = {6.5, 7.2, 7.5, 8.3, 8.6,
9.4, 9.6, 9.8, 10.0};
const int SIZE = sizeof(rates) / sizeof(double);
show1(rates, SIZE);
show2(rates, SIZE);
return 0;
}