浅谈使用浅谈使用C++多级指针存储海量多级指针存储海量qq号和密码号和密码
指针是c++中很重要的一部分内容。
可以认为,指针是C++这把宝剑最锋利的部分,当然,如果你使用不当,也会伤到自己的
本篇博客,将尝试用11级指针这个结构来存储海量的QQ号和密码。首先,郑重声明,我没有海量的QQ号和密码,只是想用
这种结构来解决这个不存在的问题,不存在只是对我而言的,据称,腾讯内部的一些代码对QQ的处理就是用的这种结构
何为11级指针,其实,就是在指针前面加了11个*,加一个*就是1级指针,加两个*就是二级指针
char *********** QQptr = NULL;
指针和数组有着扯不清的关系,这个11级指针,你可以理解为11维度的数组,平日里见得最多的恐怕也就是二维数组了,11
维,只能脑补了。如果QQ号长度不够10位,则在前面补0,那么这个QQ号的10位数字就可以用来做数组的下角标了,最后的
那个维度我们用来存储密码。
坦率的讲,我脑子里也对这个模型很是模糊,无法建立起一个有效的概念,所以,还是直接上代码吧,或许代码比语言有更好
的解释效果:
#include <iostream>
using namespace std;
#define POINTER_SIZE 10
int CharToInt(char ch)
{
return ch - '0';
}
char *********** QQptr = NULL;
void addQQ(char *qq,char* pass)
{
if(NULL==qq || NULL==pass)
{
return ;
}
if(strlen(qq)!=10)
{
return;
}
int index[10];
for(int i =0;i<10;i++)
{
index[i] = CharToInt(qq[i]);
}
if(QQptr[index[0]]==NULL)
{
QQptr[index[0]] = (char **********)malloc(sizeof(char*)* POINTER_SIZE);
memset(QQptr[index[0]], 0, sizeof(char*)* POINTER_SIZE);//清零
}
if(QQptr[index[0]][index[1]]==NULL)
{
QQptr[index[0]][index[1]] = (char *********)malloc(sizeof(char*)* POINTER_SIZE);
memset(QQptr[index[0]][index[1]], 0, sizeof(char*)* POINTER_SIZE);//清零
}
if(QQptr[index[0]][index[1]][index[2]]==NULL)
{
QQptr[index[0]][index[1]][index[2]] = (char ********)malloc(sizeof(char*)* POINTER_SIZE);
memset(QQptr[index[0]][index[1]][index[2]], 0, sizeof(char*)* POINTER_SIZE);//清零
}
if(QQptr[index[0]][index[1]][index[2]][index[3]]==NULL)
{