strlen(a用strlen計算各型別陣列長度的時候是

2022-03-05 09:14:22 字數 5710 閱讀 6630

1樓:匿名使用者

strlen 返回字元陣列中第一個'\0'(字元0)與陣列首地址的偏移量

本題中a[0]到a[254]中的內容均不為0,而a[255]被賦值為-1-255=-256,隱式轉換為char型別則為0

因為int型的-256為11111111,11111111,11111111,00000000(2進位制)

隱式轉換為char型別從而變成00000000(2進位制)=0所以strlen返回255-0=255

strlen計算字元陣列的長度

2樓:金色潛鳥

strlen() 計算字串長度,計算到字串結束符 '\0' 為止。

如果沒有遇到 字串結束符 '\0', 計算結果將不正確。

上面語句中,你還沒有給 a 初始化,也未賦值,沒內容。

如果要算 陣列佔記憶體大小 要用 sizeof() 運算子,而不是 strlen.

我想問一下:strlen();它是計算陣列 (char a[10];)這個型別的位元組數還是陣列中儲存內容的位元組數?

3樓:匿名使用者

strlen()是計算字串長度,位元組數是sizeof()

4樓:匿名使用者

strlen是返回陣列中以"\0」結尾的實際內容位元組數,要知道陣列型別的長度用sizeof函式。舉例如下: char a[10] = "abc";

int ret = 0;

ret = strlen( a ) ;

printf( "len=[%d]\n", ret ); /* 列印出來應該為 3 */

ret = sizeof( a );

printf( "len=[%d]\n", ret ); /* 列印出來應該為 10 */

5樓:兔子和小強

strlen計算字串長度,

sizeof可以計算陣列空間大小

6樓:匿名使用者

計算的是儲存內容的位元組數。

7樓:匿名使用者

當然是陣列中儲存內容的位元組數了

strlen函式計算字串長度

8樓:我本熱情

strlen()函式用來計算字串的長度,其原型為: unsigned int strlen (char *s);

引數說明:s為指定的字串。

strlen()用來計算指定的字串s 的長度,不包括結束字元」\0」。

返回值:返回字串s 的字元數。

注意一下字元陣列,例如char str…

9樓:

strlen遇到\0就結束,不繼續往下計算長度了1.答案1是因為第2個字元為\0,所以只計算了一個字元'a'

2.答案3是因為\t、\v、\\前面的\是表示轉義符3.答案1是因為\x69表示是16進位制的數值

10樓:丨嗚呼哀哉

遇到\0就表示該字串結束,後面即使再長也都不參與計算……所以第一的長度是1,

第二個的\是轉移字元,\t表示一個字元,後面同理;

第三個x69是16進位制數,其實還是一個字元明白了麼?

11樓:匿名使用者

首先,你要明確:字串結束的標誌是\0。

其次,你要明白:\t,\v是轉義字元,是字元常量。

最後,你要知道:strlen( )函式的作用是測試字串長度(不包括\0)。

char s[10] = ;

當執行strlen(s)時,從起始地址s開始掃描,到\0時結束操作,返回一個整型數1。

char s[ ] = "\t\v\\\0will\n";

在這個字串中\0前面有3個轉義字元\t\v\\,所以返回3。

char s[ ] = "\x69\082\n";

\x69 是一個轉義字元,意思是十六進位制的69在ascii中所代表的字元。

12樓:向日葵

引數說明:s為指定的字串。

strlen()用來計算指定的字串s 的長度,不包括結束字元」\0」。

返回值:返回字串s 的字元數。

注意一下字元陣列,例如

edu.cn/cpp/u/biaozhunku/「; 定義了一個大小為100的字元陣列,但是僅有開始的11個字元被初始化了,剩下的都是0,所以 sizeof(str) 等於100,strlen(str) 等於11。

strlen() 函式計算的是字串的實際長度,遇到第一個』\0』結束。如果你只定義沒有給它賦初值,這個結果是不定的,它會從首地址一直找下去,直到遇到』\0』停止。

而sizeof返回的是變數宣告後所佔的記憶體數,不是實際長度,此外sizeof不是函式,僅僅是一個操作符,strlen()是函式。

擴充套件資料

strlen()函式語法格式

$len = strlen(string);

引數說明

string:規定要計算的字串;$len:接收函式返回值的變數;例項:

<?php

header("content-type:text/html;charset=utf-8");//設定編碼,解決中文亂碼

$string1 = "www .ggbiji. com"; //字串1

$string2 = "國哥筆記"; //字串2

$result1 = strlen($string1); //英文字母

$result2 = strlen($string2); //中文漢字

echo "字串\"".$string1."\"的長度為:".$result1."

";echo "字串\"".$string2."\"的長度為:".$result2."";

c語言中如何得到任何一個型別的已賦值的陣列的長度?

13樓:雲澹楓卿

求長度通常是strlen和sizeof

下面是他倆的區別幫助你知道

1.sizeof操作符的結果型別是size_t,它在標頭檔案中typedef為unsigned int型別。

該型別保證能容納實現所建立的最大物件的位元組大小。

2.sizeof是算符,strlen是函式。

3.sizeof可以用型別做引數,strlen只能用char*做引數,且必須是以''\0''結尾的。

sizeof還可以用函式做引數,比如:

short f();

printf("%d\n", sizeof(f()));

輸出的結果是sizeof(short),即2。

4.陣列做sizeof的引數不退化,傳遞給strlen就退化為指標了。

5.大部分編譯程式 在編譯的時候就把sizeof計算過了 是型別或是變數的長度這就是sizeof(x)可以用來定義陣列維數的原因

char str[20]="0123456789";

int a=strlen(str); //a=10;

int b=sizeof(str); //而b=20;

6.strlen的結果要在執行的時候才能計算出來,時用來計算字串的長度,不是型別佔記憶體的大小。

7.sizeof後如果是型別必須加括弧,如果是變數名可以不加括弧。這是因為sizeof是個操作符不是個函式。

8.當適用了於一個結構型別時或變數, sizeof 返回實際的大小,

當適用一靜態地空間陣列, sizeof 歸還全部陣列的尺寸。

sizeof 操作符不能返回動態地被分派了的陣列或外部的陣列的尺寸

9.陣列作為引數傳給函式時傳的是指標而不是陣列,傳遞的是陣列的首地址,

如: fun(char [8])

fun(char )

都等價於 fun(char *)

在c++裡引數傳遞陣列永遠都是傳遞指向陣列首元素的指標,編譯器不知道陣列的大小

如果想在函式內知道陣列的大小, 需要這樣做:

進入函式後用memcpy拷貝出來,長度由另一個形參傳進去

fun(unsiged char *p1, int len)

我們能常在用到 sizeof 和 strlen 的時候,通常是計算字串陣列的長度

看了上面的詳細解釋,發現兩者的使用還是有區別的,從這個例子可以看得很清楚:

char str[20]="0123456789";

int a=strlen(str); //a=10; >>>> strlen 計算字串的長度,以結束符 0x00 為字串結束。

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

上面是對靜態陣列處理的結果,如果是對指標,結果就不一樣了

char* ss = "0123456789";

sizeof(ss) 結果 4 ===》ss是指向字串常量的字元指標,sizeof 獲得的是一個指標的之所佔的空間,應該是

長整型的,所以是4

sizeof(*ss) 結果 1 ===》*ss是第一個字元 其實就是獲得了字串的第一位'0' 所佔的記憶體空間,是char類

型的,佔了 1 位

strlen(ss)= 10 >>>> 如果要獲得這個字串的長度,則一定要使用 strlen

14樓:匿名使用者

使用sizeof操作符可以計算任何型別陣列的長度。

使用方法:

sizeof(a)/sizeof(a[0]); //其中a是陣列名。

原理就是,用整個陣列的位元組數除以一個元素的位元組數,結果就是陣列的長度。

sizeof判斷資料型別長度符的關鍵字

用法sizeof(型別說明符,陣列名或表示式)或sizeof 變數名定義sizeof是c/c++中的一個操作符(operator),簡單的說其作用就是返回一個物件或者型別所佔的記憶體位元組數。

15樓:匿名使用者

常用的方法是另設一個整型變數用來記錄陣列中的有效元素的個數。

16樓:匿名使用者

用sizeof運算子吧,printf("%d",&sizeof(a))

17樓:篤俠

sizeof(a)/sizeof(struct x)

請問用strlen來計算字串的長度時 空格算不算上去的咯

18樓:匿名使用者

1. 測字串長度函式strlen

格式: strlen(字元陣列名)

功能:測字串的實際長度(不含字串結束標誌『\0』) 並作為函式返回值。

【例】#include"string.h"

main()

19樓:

當然算了,你要想不算的話的使用trim\trimleft\trimright之類函式處理掉兩邊的空格

c語言中strlen函式可以用來測量陣列的長度嗎

20樓:匿名使用者

strlen只可以用來測量char*字串的長度,求陣列長度(比如int a)要用sizeof(a)/sizeof(int)

21樓:小壞蛋寬

不能btw,陣列長度不是在定義時就給出了麼?

13514618101911用簡便方法計算

1 2 4 1 3 5 1 4 6 1 5 7 1 8 10 1 9 11 1 2 1 4 1 3 1 5 1 4 1 6 1 5 1 7 1 8 1 10 1 9 1 11 2 1 2 1 3 1 10 1 11 2 106 165 2 53 165 原式 1 2 1 2 1 4 1 3 1 5 ...

負數怎樣用科學計術法表示,負數可以用科學計數法表示嗎

科學記數法是指把一個數表示成a 10的n次冪的形式 1 a 10,n 為整數。版科學計數法可以權很方便地表示一些絕對值較大的數,用科學計數法也可以很方便地表示一些絕對值較小的數。一個小於1的正數可以表示為a 1on,其中1 a 10,n是負整數。例如 1 240000 2.4x10 52 0.000...

542114253411怎麼用簡便方法計算

採用結合律,分 配律逆運算計算簡 內便快捷容。2x1 5 4x2 11 4x2 5 3x4 11 2x1 5 4x2 5 4x 2 11 3x4 11 2x 1 5 4 5 4x 2 11 3 11 2x5 5 4x5 11 10 5 20 11 10x11 55 20x5 55 110 100 5...