這裡僅為個人整理,大部分來自百科
一、strlen函式
strlen所作的僅僅是乙個計數器的工作,它從記憶體的某個位置(可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體區域)開始掃瞄,直到碰到第乙個字串結束符'\0'為止,然後返回計數器值(長度不包含'\0')。
1、用法:
針對碰到第乙個字串結束'\0'為止的兩點說明:
(1)見下例:
1char a[10]=;
2 cout結果為0
從開始到遇到乙個'\0'為止。
(2)見下例:
1char a[10
];2 cout此處結果不定
從開始到遇到乙個'\0'為止。
2、函式實現
1/*遞迴版
*/2 size_t strlen(const
char *pstr)39
else
10return0;
11}1213
/*非遞迴版
*/14 size_t strlen(const
char *pstr)
1523
rturn psize;
24 }
二、sizeof
sizeof是c/c++中的乙個操作符(operator),簡單的說其作用就是返回乙個物件或者型別所佔的記憶體位元組數。sizeof( )返回的是變數宣告後所佔的記憶體數,不是實際長度。
1、這是乙個依賴編譯系統的值,標頭檔案為stddef.h中,一般定義為:
1 typedef unsigned int size_t;
2、語法
1sizeof(object); //
sizeof(物件);
2sizeof(type_name); //
sizeof(型別);
3sizeof
object; //
sizeof 物件;和第一行比少乙個括號
三、strlen函式和sizeof的區別
(1)sizeof不是函式,僅僅是乙個取位元組運算子,strlen是函式;
(2)sizeof可以用型別做引數,strlen只能用char*做引數,且必須是以''\0''結尾的;
(3)陣列做sizeof的引數不退化,傳遞給strlen就退化為指標了;
更多見百科。
區別舉例:
(1)針對靜態陣列:
1char str[20]="
0123456789";
2int a=strlen(str); //
a=10
3int b=sizeof(str); //
b=20;
(2)針對指標
1char* ss = "
0123456789
"; //
ss是指向字串常量的字元指標
2sizeof(ss) //
結果 4,sizeof 獲得的是乙個指標的值所佔的空間,應該是長整型的,所以是4
3sizeof(*ss) //
結果 1, *ss是第乙個字元 其實就是獲得了字串的第一位'0' 所佔的記憶體空間,是char型別的,佔了 1 位
4 strlen(ss)= 10
//如果要獲得這個字串的長度,則一定要使用 strlen
注:從對比知,若想獲得乙個字串的長度,一定要使用strlen
Google Hacking 的實現以及應用 轉
前言 google hacking其實並算不上什麼新東西,在早幾年我在一些國外站點上就看見過相關的介紹,但是由於當時並沒有重視這種技術,認為最多就只是用來找找未改名的mdb或者別人留下的webshell什麼的,並無太大實際用途.但是前段時間仔細啃了些資料才猛然發覺google hacking其實並非...
google hacking的實現以及應用
google hacking其實並算不上什麼新東西,在早幾年我在一些國外站點上就看見過相關的介紹,但是由於當時並沒有重視這種技術,認為最多就只是用來找找未改名 的mdb或者別人留下的webshell什麼的,並無太大實際用途.但是前段時間仔細啃了些資料才猛然發覺google hacking其實並非如此...
Google Hacking的實現以及應用
google hacking其實並算不上什麼新東西,在早幾年我在一些國外站點上就看見過相關的介紹,但是由於當時並沒有重視這種技術,認為最多就只是用來找找未改名的mdb或者別人留下的webshell什麼的,並無太大實際用途.但是前段時間仔細啃了些資料才猛然發覺google hacking其實並非如此簡...