当前位置:主页 > c/c++教程 > C++多级指针存储海量qq号和密码

浅谈使用C++多级指针存储海量qq号和密码

发布:2022-10-18 09:00:04 59


为找教程的网友们整理了C++相关的编程文章,网友巴婉淑根据主题投稿了本篇教程内容,涉及到c语言多级指针、c、多级指针、c、存储地址的指针、C++多级指针存储海量qq号和密码相关内容,已被308网友关注,涉猎到的知识点内容可以在下方电子书获得。

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++编程语言中的类浅析

    发布:2022-07-04

    给网友们整理关于C#的教程,在本篇文章里我们给大家分析了C#和C++编程语言中的类的相关知识点,正在学习的朋友们跟着操作下。


  • C++连接mysql的方法(直接调用C-API)

    C++连接mysql的方法(直接调用C-API)

    发布:2022-06-21

    给大家整理一篇关于C++的教程,首先安装mysql,点完全安装,才能在在安装目录include找到相应的头文件,注意,是完全安装,需要的朋友可以参考下


  • C++保存txt文件实现方法代码实例

    发布:2022-04-08

    这篇文章主要介绍了C++保存txt文件实现方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


  • Lua和C/C++互相调用实例分析

    发布:2022-06-23

    给网友们整理关于C++的教程,今天小编就为大家分享一篇关于Lua和C/C++互相调用实例分析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧


  • C++编译器无法捕捉到的8种错误实例分析

    发布:2021-06-09

    这篇文章主要介绍了C++编译器无法捕捉到的8种错误,是深入学习C++所必须加以掌握的排错技能,需要的朋友可以参考下


  • C++ 格式化日志输出实现代码

    发布:2022-04-24

    这篇文章主要介绍了C++ 格式化日志输出实现代码,需要的朋友可以参考下


  • C++实现会员管理程序的具体方案

    发布:2021-06-01

    这篇文章主要为大家详细介绍了C++实现会员管理程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


网友讨论