當前位置:首頁 » 編程語言 » c語言的指針strlen
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言的指針strlen

發布時間: 2022-08-22 13:46:18

c語言中的strlen函數

strlen()只是統計字元串的長度,統計到'\0'結束,但不包括'\0',這個與sizeof()不一樣。
對於用雙引號引起來的字元串,系統默認最後一位字元為'\0',如你自己定義的:
char a[]="china";
char b[]={"china"};
另外,數組初始化還可以是一個字元一個字元賦值,如:
char c[]={'c','h','i','n','a'};
char d[]={'c','h','i','n','a','\0'};
但系統不會自動給你在最末位添加'\0』
所以在統計char c[]={'c','h','i','n','a'}時,統計到a時,系統還沒找到\0,所以會繼續統計,直到找到'\0'為止。所以就有你第三個值為11的情況,這個根據不同的運行環境而定。

⑵ c語言中strlen()怎麼用

函數聲明:extern unsigned int strlen(char *s);

所屬函數庫:<string.h>

功能:返回s所指的字元串的長度,其中字元串必須以』\0』結尾

參數:s為字元串的初始地址

使用舉例:

代碼如下

編譯運行結果

說明:

函數strlen比較容易理解,其功能和sizeof很容易混淆。其中sizeof指的是字元串聲明後佔用的內存長度,它就是一個操作符,不是函數;而strlen則是一個函數,它從第一個位元組開始往後數,直到遇見了』\0』,則停止

第一 string頭文件中的函數strlen 只可以用來測試字元型數組的長度,其他類型不可以

第二 如果要測試int 修改原函數中的參數,會導致數組長度變長(計算機會一直找下去,直到遇到\0)

第三 如果是字元數組,當裡面的字元數少於數組長度時,可以正常輸出用strlen,如果等於數組長度,則會出現問題

函數介紹:

(推薦教程:c語言教程)

strlen()函數用於計算字元串的長度,直到空結束字元,但不包括空結束字元。

語法結構:

size_t strlen(const char *str)

參數說明:

str -- 要計算長度的字元串。

返回值:

該函數返回字元串的長度

⑶ c語言 字元數組 字元指針 sizeof strlen 的區別

簡單概括,strlen()返回的是字元數組或者字元指針中的元素個數,sizeof返回的是字元數組中所有元素所佔的總位元組數,對於字元指針,返回的只是指針所佔的位元組數,32位系統上都是4位元組。具體來說有如下幾點區別:
1.
sizeof操作符的結果類型是size_t,它在頭文件中typedef為unsigned
int類型。該類型保證能容納實現所建立的最大對象的位元組大小。
2.
sizeof是算符,strlen是函數。
3.
sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以''\0''結尾的。
4.
數組做sizeof的參數不退化,傳遞給strlen就退化為指針了。
5.
大部分編譯程序在編譯的時候就把sizeof計算過了,是類型或是變數的長度這就是sizeof(x)可以用來定義數組維數的原因。
char
str[20]="0123456789";
//
str是編譯期大小已經固定的數組
int
a=strlen(str);
//
a=10;
//strlen()在運行起確定,計算的是實際長度
int
b=sizeof(str);
//
而b=20;
//sizeof()在編譯期確定,str的類型是int[20],計算的是占據內存的大小
6.
strlen的結果要在運行的時候才能計算出來,是用來計算字元串的實際長度,不是類型占內存的大小。
7.
sizeof後如果是類型必須加括弧,如果是變數名可以不加括弧。這是因為sizeof是個操作符不是個函數。
char
c;
sizeof
c;
//變數名可以不加括弧
8.
當適用於一個結構類型或變數,
sizeof
返回實際的大小,
當適用一靜態地空間數組,
sizeof
歸還全部數組的尺寸。
sizeof
操作符不能返回動態地被分派了的數組或外部的數組的尺寸

⑷ c語言中strlen的用法

__cdecl
strlen(const
char
*);
計算字元串的實際長度(不含字元串結束標志『\0』),並將計算結果作為函數值返回。

⑸ c語言裡面的strlen是干什麼的

strlen()是計算字元串長度的函數,將返回從字元串首到'\0'之間總共的字元個數,原型為:extern unsigned int strlen(char *s);
所以除非你的a[0]本身就是一個字元串,否則不能這樣使用
另外也可以用這個函數計算從字元串任意位置到'\0'之間的長度
比如:定義char s[20] = {"abcdefg"};
那麼strlen(s)將返回7;而strlen(&s[3])的結果是4,注意這里是「&s[3]」是從第三個字元所在的地址開始計算長度。

⑹ c語言中strlen是什麼意思

strlen:計算字元串長度的庫函數名。

str:通常,程序員喜歡用它作 字元串 變數名。它是string(英文詞字元串的縮寫)。

len:通常,程序員喜歡用它作 變數名。它是 length(英文詞長度的縮寫)。

例如:

char str[20]="I am a student";

int len;

len = strlen(str);

printf("the string length is: %d",len);

(6)c語言的指針strlen擴展閱讀:

函數原型

externunsignedintstrlen(char*s);

在Visual C++ 6.0或Dev-C++中,原型為size_tstrlen(constchar*string);,其中size_t實際上是unsigned int,在VC6.0或Dev-C++中可以看到這樣的代碼:

typedefunsignedintsize_t;

頭文件:string.h或cstring

格式:strlen (字元指針表達式)

功能:計算給定字元串的(unsigned int型)長度,不包括''在內

說明:返回s的長度,不包括結束符NULL。

strlen(char*)函數求的是字元串的實際長度,它求得方法是從開始到遇到第一個'',如果你只定義沒有給它賦初值,這個結果是不定的,它會從aa首地址一直找下去,直到遇到''停止。

⑺ C語言的指針和strlen,sizeof的問題。

前面你說對了,但後面
char
*p
=
"abcd";
k
=strlen(p);
i
=
sizeof(p);
因為此時p是一個指針,所有類型的指針都佔4個byte,所以無論p指向什麼東西,sizeof(p)都佔4個byte,而strlen(p)就為(串的長度-1),因為『\0』不計算在內。

⑻ c語言strlen函數問題

strlen實際上是,從參數表示的地址往後找,找到第一個'',即串尾。然後計算''至首地址的「距離」,即隔了幾個字元,從而得出長度。

char x[]={0xBC,0xDD,0xCA};中,實際上是定義了一個char型的數組,而由於x[0],即0xBC開始往後找,一直到0xCA,都沒'',所以會繼續往後。當然,實際上往後找到的是其他值。

改char x[]={0xBC,0xDD,0xCA,0x00};後,應該就是3了。

(8)c語言的指針strlen擴展閱讀:

strlen所作的僅僅是一個計數器的工作,它從內存的某個位置(可以是字元串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描,直到碰到第一個字元串結束符''為止,然後返回計數器值(長度不包含'')。

函數原型

extern unsigned int strlen(char *s);

在Visual C++ 6.0或Dev-C++中,原型為

size_t strlen(const char *string);

,其中size_t實際上是unsigned int,在VC6.0或Dev-C++中可以看到這樣的代碼:

typedef unsigned int size_t;

頭文件:string.h或cstring

格式:strlen (字元數組名)

功能:計算給定字元串的(unsigned int型)長度,不包括''在內

說明:返回s的長度,不包括結束符NULL。

參考資料:strlen-網路