1. 程式人生 > >strlen函式詳解

strlen函式詳解

在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,看看結果: