// 指针类型参数
void funB(map<uint32_t,string>* mp){
(*mp)[5]="a";// 先解引用指针,然后再进行索引操作。[]优先级更高,所以*时要加括号
cout<<"funB: "<<static_cast<void *>(mp)<<"\n";// 转换成void *类型打印指针地址
// 引用参数
void funA(map<uint32_t,string>& mp){
funB(&mp);
cout<<"funA: "<<&mp<<"\n";
int main() {
map<uint32_t,string> mp;
cout<<&mp<<"\n";
funA(mp);
funB(&mp);
cout<<mp.size();
// funB(nullptr); // 访问空指针,会导致coredump
cout<<endl;
return 0;
运行结果:
0x7fffba1a5a30
funB: 0x7fffba1a5a30
funA: 0x7fffba1a5a30
funB: 0x7fffba1a5a30
都是同一个地址,同一个变量。