第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

c語(yǔ)言數(shù)組長(zhǎng)度問(wèn)題?

c語(yǔ)言數(shù)組長(zhǎng)度問(wèn)題?

C
第七科灬水高 2016-09-01 12:18:20
#include <stdio.h>int main(int argc, char *argv[]){?char s[]={0};?int a;?s[0]='a';s[1]='b';s[2]='c';?a=sizeof(s); ?printf("%d",a);?return 0;}問(wèn)題為什么我這樣子輸出為1?如果我想得到輸出結(jié)果為三該怎么改?
查看完整描述

3 回答

已采納
?
onemoo

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊

內(nèi)容太長(zhǎng),我另寫(xiě)一個(gè)回答:


對(duì)于不確定將要存儲(chǔ)多少個(gè)字符的情形,你只能先定義一個(gè)足夠長(zhǎng)的數(shù)組,比如char s[256]; ?

在接受輸入時(shí)不要用那種可以一次性存入一串字符的函數(shù)(如scanf("%s", s)),因?yàn)槟悴恢罆?huì)有多少個(gè)字符被輸入,用戶輸入的字符串可能會(huì)超過(guò)數(shù)組的大小,這會(huì)導(dǎo)致“溢出”,這是很典型的錯(cuò)誤和安全隱患。

應(yīng)該一個(gè)字符一個(gè)字符地接受輸入,比如用for循環(huán)getchar(),同時(shí)要記下已經(jīng)輸入的字符個(gè)數(shù),如果超范圍了就停止接受輸入(并提示用戶輸入超長(zhǎng)...之類(lèi)的)。 最后別忘了在字符串尾加上'\0'('\0'是字符串結(jié)束的標(biāo)志)

輸入完畢后,你可以用?strlen 之類(lèi)的函數(shù)算出有多少個(gè)字符。或者你也可以自己算:從數(shù)組開(kāi)頭開(kāi)始數(shù),直到遇到'\0'。


關(guān)于 sizeof:

注意!它不是函數(shù),它是個(gè)操作符。它會(huì)返回操作數(shù)占用內(nèi)存的大?。ㄒ詁yte為單位,類(lèi)型是size_t)

sizeof有兩種用法:

  • sizeof 變量名 :得到的是這個(gè)變量占用內(nèi)存的大小

  • sizeof (類(lèi)型名) :得到的是這個(gè)類(lèi)型占用內(nèi)存的大小



sizeof后接的如果是個(gè)數(shù)組名,就會(huì)返回整個(gè)數(shù)組占用的內(nèi)存大小。

比如在你的代碼中,sizeof s 就返回1,因?yàn)槟愕膕只有一個(gè)char元素,一個(gè)char元素占一字節(jié)。

如果?char s[256],那么?sizeof s 就返回 256 * char占用字節(jié)數(shù) = 256。 ?所以你不能用 sizeof s 來(lái)求得 s 中有多少個(gè)字符,s中也許只存了5個(gè)字符,但 sizeof 得到的是整個(gè) s 數(shù)組的大小。你只能用 strlen 之類(lèi)的方法來(lái)得到實(shí)際字符數(shù)。


P.S. 準(zhǔn)確地說(shuō),sizeof的第一個(gè)用法中,sizeof后接的不僅是變量名,而是后接一個(gè)表達(dá)式(變量名也算表達(dá)式的一種)。

查看完整回答
1 反對(duì) 回復(fù) 2016-09-01
?
噼喱啪啦

TA貢獻(xiàn)392條經(jīng)驗(yàn) 獲得超170個(gè)贊

想得到3你可以這樣

  1. 直接定義數(shù)組的時(shí)候?char s[]={'a','b','c'};或是char s=“a,b,c”

  2. 接著學(xué),會(huì)有動(dòng)態(tài)數(shù)組的教程,比較少用

  3. 還會(huì)有string 類(lèi)型,一般的字符數(shù)組都用string類(lèi)型,后面char很少用了

查看完整回答
反對(duì) 回復(fù) 2016-09-01
?
onemoo

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊

數(shù)組的大小在定義時(shí)就確定了。?

你在定義數(shù)組s時(shí)沒(méi)有指定大小,那么編譯器會(huì)根據(jù)你提供的初始化列表的元素個(gè)數(shù)來(lái)決定數(shù)組的大小。?

而你用的是{0}(只有一個(gè)元素0),所以s數(shù)組只含有這一個(gè)元素0,sizeof s就是一個(gè)char的大小1。


因?yàn)閿?shù)組的大小是固定的,你向 s[1] s[2] 中賦值也不會(huì)使數(shù)組擴(kuò)大,并且這樣訪問(wèn)是越界的,這種代碼很不安全。


你想得到結(jié)果為3,那就在定義數(shù)組時(shí)指明其大小為3就好了:char s[3]

查看完整回答
反對(duì) 回復(fù) 2016-09-01
  • 第七科灬水高
    第七科灬水高
    那請(qǐng)問(wèn)一下比如說(shuō)這么一個(gè)情況: 我輸入一堆英文字符,但是我想知道這堆英文字符的長(zhǎng)度該怎么辦? 還有就是sizeof()這個(gè)函數(shù)的具體用法是什么?
  • 3 回答
  • 1 關(guān)注
  • 1896 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)