1. 程式人生 > >面試常客2---sizeof和strlen的前世今生

面試常客2---sizeof和strlen的前世今生

char str[20]="0123456789"; 

int   a=strlen(str); /*a=10;strlen 計算字串的長度,以\0'為字串結束標記。 

int   b=sizeof(str); /*b=20;sizeof 計算的則是分配的陣列str[20] 所佔的記憶體空間的大小,不受裡面儲存的內容影響

 

總之,對於指標,sizeof操作符返回這個指標佔的空間,一般是4個位元組;而對於一個數組,sizeof返回這個陣列所有元素佔的總空間。char*與char[]容易混淆,一定要分清,而且char*="aaa"的寫法現在不被提倡,應予以避免

而strlen不區分是陣列還是指標,就讀到\0為止返回長度。而且strlen是不把\0計入字串的長度的。