c_cpp C ++指针使用练习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++指针使用练习相关的知识,希望对你有一定的参考价值。
#include <tr1/unordered_map>
#include <iostream>
#include <string>
int main()
{
int ** in = new int*[3]();
in[0] = new int(1);
in[1] = new int(2);
in[2] = new int(3);
std::cout << "address 1:" << in[0] << std::endl; //int 1 所在地址
std::cout << "address 2:" << in[1] << std::endl; //int 2 所在地址
std::cout << "address 3:" << in[2] << std::endl; //int 3 所在地址
std::tr1::unordered_map<std::string,int**> dict;
dict.insert({"0",&in[0]});
dict.insert({"1",&in[1]});
dict.insert({"2",&in[2]});
std::cout << "pointer address 1:" << dict["0"] << std::endl; //指向 int 1 所在地址的地址
std::cout << "pointer address 2:" << dict["1"] << std::endl; //指向 int 2 所在地址的地址
std::cout << "pointer address 3:" << dict["2"] << std::endl; //指向 int 3 所在地址的地址
delete [] in;
std::cout << "pointer address 1 (del):" << dict["0"] << std::endl; //指向 int 1 所在地址的地址
std::cout << "pointer address 2 (del):" << dict["1"] << std::endl; //指向 int 2 所在地址的地址
std::cout << "pointer address 3 (del):" << dict["2"] << std::endl; //指向 int 3 所在地址的地址
//std::cout << *(dict["0"]) << std::endl; //该处内容被释放掉了
//std::cout << *(dict["1"]) << std::endl; //该处内容被释放掉了
//std::cout << *(dict["2"]) << std::endl; //该处内容被释放掉了
//std::cout << **(dict["0"]) << std::endl; //中间的地址内容被删掉了,无法再 **
//std::cout << **(dict["1"]) << std::endl; //中间的地址内容被删掉了,无法再 **
//std::cout << **(dict["2"]) << std::endl; //中间的地址内容被删掉了,无法再 **
return 0;
}
以上是关于c_cpp C ++指针使用练习的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp c中的void指针练习
c_cpp 该C程序使用指针计算数组元素的总和。程序使用指针遍历数组并将元素加起来
c_cpp func指针练习
c_cpp 使用指针算法反转字符串
c_cpp 使用第二级指针删除链接列表节点
c_cpp 使用realloc扩展int指针以保存c中的更多元素