strlen函式詳解
阿新 • • 發佈:2018-11-10
在c語言中,strlen函式,引用<string.h>標頭檔案,作用是計算字串長度。
定義 : size_t strlen ( const char * str );
這裡有兩處說明:
1.返回型別size_t
size_t 可以看作 unsigned long ,是無符號長整形。
2.引數用 const 修飾
const 修飾的資料型別是指常型別,常型別的變數或物件的值是不能被更新的。然而 const 的位置不同,被限制的物件 也不相同,這裡寫三個程式碼比較一下:
(1)const char * p = str;
(2)char const * p = str;
(3)char * const p = str;
這裡面(1)(2)都是 const 在 * 的左邊,這兩個程式碼是等價的,限制 p 指向的元素,即 *p 不能修改。
而(3)是 const 在 * 右邊,限制的是指標指向,即 p 不能修改。
通過上面的三個程式碼,我們可以這樣理解,const 在 *p 的左邊,限制的是*p,只在 p 的左邊,限制的是p。
那麼來看看例項程式碼:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char* str = "hello";
printf("%lu\n", strlen(str));
system("pause");
return 0;
}
說明:列印時用的%lu,這是對應的無符號長整形的列印,與上面所說的size_t 是無符號長整形相呼應。
字串最後會有一個 '\0' ,在這個函式中只計算 '\0' 之前的元素個數。所以結果應該是5,看看結果: