如果只想用指针传递参数,又或者不想让指针乱动等等,可以使用const修饰符。
或者干脆使用 引用(Reference)——可以认为其相当于type * const,隐去了地址操作,相对安全些。
#include <</span>iostream>
using namespace std;
int main()
{
const int a = 1; //相当于 int const a = 1,书写习惯而已。
int b = 2;
int c = 3;
int d = 4;
int e = 10000;
// int * ip = &a; //error: invalid conversion from 'const int*' to 'int*'|
const int * ipa = &a; //不能通过指针修改 a 的值,只可以修改指针值 ipa。
int const * ipb = &b; //相当于int const *。
int * const ipc = &c; //可以通过指针修改 c,但不能修改指针 ipc。
const int * const ipd = &d; //什么都不能修改!
// *ipa = 11; //error: assignment of read-only location '* ipa'|
ipa = &e;
// *ipb = 21; //error: assignment of read-only location '* ipb'|
ipb = &e;
*ipc = 31;
// ipc = &e; //error: assignment of read-only variable 'ipc'|
// *ipd = 41; //error: assignment of read-only location '*(const int*)ipd'|
// ipd = &e; //error: assignment of read-only variable 'ipd'|
cout << *ipa << endl;
cout << *ipb << endl;
cout << *ipc << endl;
cout << *ipd << endl;
return 0;
}
|