国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

淺談使用C++多級指針存儲海量qq號和密碼

2020-01-26 13:47:33
字體:
來源:轉載
供稿:網友

指針是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號和密碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修武县| 盐池县| 北碚区| 讷河市| 诏安县| 江华| 潼南县| 梨树县| 兴文县| 杭锦后旗| 华容县| 临沭县| 金门县| 陆川县| 衡阳县| 靖边县| 永丰县| 泸水县| 交口县| 民丰县| 阳西县| 桃园市| 新乐市| 涞源县| 上栗县| 京山县| 乌兰察布市| 额尔古纳市| 鹤岗市| 镇安县| 分宜县| 濮阳市| 达拉特旗| 凤城市| 屏南县| 金昌市| 黎川县| 芜湖市| 宁德市| 壤塘县| 清丰县|