虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C/C++编程 > 浅谈使用C++多级指针存储海量qq号和密码

浅谈使用C++多级指针存储海量qq号和密码
类别:C/C++编程   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了浅谈使用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) {
    QQptr[index[0]][index[1]][index[2]][index[3]] = (char *******)malloc(sizeof(char*)* POINTER_SIZE);
    memset(QQptr[index[0]][index[1]][index[2]][index[3]], 0, sizeof(char*)* POINTER_SIZE);
    //清零 }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]]==NULL) {
    QQptr[index[0]][index[1]][index[2]][index[3]][index[4]] = (char ******)malloc(sizeof(char*)* POINTER_SIZE);
    memset(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]], 0, sizeof(char*)* POINTER_SIZE);
    //清零 }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]]==NULL) {
    QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]] = (char *****)malloc(sizeof(char*)* POINTER_SIZE);
    memset(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]], 0, sizeof(char*)* POINTER_SIZE);
    //清零 }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]]==NULL) {
    QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]] = (char ****)malloc(sizeof(char*)* POINTER_SIZE);
    memset(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]], 0, sizeof(char*)* POINTER_SIZE);
    //清零 }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]]==NULL) {
    QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]] = (char ****)malloc(sizeof(char*)* POINTER_SIZE);
    memset(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]], 0, sizeof(char*)* POINTER_SIZE);
    //清零 }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]]==NULL) {
    QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]] = (char ***)malloc(sizeof(char*)* POINTER_SIZE);
    memset(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]], 0, sizeof(char*)* POINTER_SIZE);
    //清零 }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]]==NULL) {
    QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]] = (char **)malloc(sizeof(char*)* POINTER_SIZE);
    memset(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]], 0, sizeof(char*)* POINTER_SIZE);
    //清零 }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]][index[9]]==NULL) {
    QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]][index[9]] = (char *)malloc(sizeof(char*)* 1024);
    memset(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]][index[9]], 0, sizeof(char*)* POINTER_SIZE);
    //清零 }
    strcpy(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]][index[9]],pass);
    }
    bool isExist(char *qq) {
    if(NULL==qq) {
    return NULL ;
    }
    if(strlen(qq)!=10) {
    return NULL;
    }
    int index[10];
    for(int i =0;
    i<10;
    i++) {
    index[i] = CharToInt(qq[i]);
    }
    if(QQptr[index[0]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]][index[2]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]][index[2]][index[3]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]]==NULL) {
    return false;
    }
    if(QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]][index[9]]==NULL) {
    return false;
    }
    return true;
    }
    char* getPass(char* qq) {
    if(NULL==qq) {
    return NULL ;
    }
    if(strlen(qq)!=10) {
    return NULL;
    }
    if(!isExist(qq)) {
    return NULL;
    }
    int index[10];
    for(int i =0;
    i<10;
    i++) {
    index[i] = CharToInt(qq[i]);
    }
    return QQptr[index[0]][index[1]][index[2]][index[3]][index[4]][index[5]][index[6]][index[7]][index[8]][index[9]];
    }
    int main() {
    QQptr = (char ***********)malloc(sizeof(char*)* POINTER_SIZE);
    memset(QQptr, 0, sizeof(char*)* POINTER_SIZE);
    //清零 char *qq = "0381084992";
    char *pass = "314krtqw";
    addQQ(qq,pass);
    cout<<getPass(qq)<<endl;
    return 0;
    }

总结

以上就是本文关于浅谈使用C++多级指针存储海量qq号和密码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

您可能感兴趣的文章:

  • c++用指针交换数组的实例讲解
  • C语言指针详解及用法示例
  • C++中回调函数及函数指针的实例详解
  • C++中函数指针详解及代码分享
  • java使用RandomAccessFile类基于指针读写文件实例代码
  • golang方法中receiver为指针与不为指针的区别详析
  • C++ 中boost::share_ptr智能指针的使用方法
  • C语言中二级指针的实例详解
相关热词搜索: c语言多级指针 c 多级指针 c 存储地址的指