您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何使用C++多級指針存儲海量qq號和密碼”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用C++多級指針存儲海量qq號和密碼”這篇文章吧。
指針是c++中很重要的一部分內(nèi)容。
可以認(rèn)為,指針是C++這把寶劍最鋒利的部分,當(dāng)然,如果你使用不當(dāng),也會傷到自己的
本篇博客,將嘗試用11級指針這個結(jié)構(gòu)來存儲海量的QQ號和密碼。首先,鄭重聲明,我沒有海量的QQ號和密碼,只是想用這種結(jié)構(gòu)來解決這個不存在的問題,不存在只是對我而言的,據(jù)稱,騰訊內(nèi)部的一些代碼對QQ的處理就是用的這種結(jié)構(gòu)
何為11級指針,其實,就是在指針前面加了11個*,加一個*就是1級指針,加兩個*就是二級指針
char *********** QQptr = NULL;
指針和數(shù)組有著扯不清的關(guān)系,這個11級指針,你可以理解為11維度的數(shù)組,平日里見得最多的恐怕也就是二維數(shù)組了,11維,只能腦補了。如果QQ號長度不夠10位,則在前面補0,那么這個QQ號的10位數(shù)字就可以用來做數(shù)組的下角標(biāo)了,最后的那個維度我們用來存儲密碼。
坦率的講,我腦子里也對這個模型很是模糊,無法建立起一個有效的概念,所以,還是直接上代碼吧,或許代碼比語言有更好的解釋效果:
#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號和密碼”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。