歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

sizeof 和strlen()的區別

<span >char *ptr = "hello world";
char ptr[100] = "hello world";
char ptr[] = "hello world";</span>
<span >上述三行代碼每行的sizeof(ptr)和strlen(ptr)的值分別是多少呢?</span>
<span >首先第一行:sizeof(ptr)=4(32位操作系統下)</span>
<span >            strlen(ptr)=11</span>
<span >第二行:sizeof(ptr)=100</span>
<span >        strlen(ptr)=11</span>
<span >第三行:sizeof(ptr)=12</span>
<span >        strlen(ptr)=11</span>
<span >  首先,sizeof並不是一個函數,而是一個操作數,而strlen()是一個函數。</span>
<span >  其次,sizeof是求字節長度,strlen()是求字符串長度。字符串長度是遇到'\0'就結束運算,所以返回值是11;而*ptr是指針變量,指針變量保存的是地址,地址位數由操作系統來決定,如果操作系統是64位,那麼上述代碼的第一行答案則是8,ptr[100]是因為我們在定義變量的時候已經給其分配了100的字節長度,所以答案是100;而ptr[]則根據字符串和'\0'的長度和求得4.</span>
Copyright © Linux教程網 All Rights Reserved