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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我指的“系統(tǒng)”是VC,在Turbo C下運行char p[]={'a','b','c'}就沒問題!!

#include"stdio.h"#include"string.h"  void main() { char c[]={'a','b','c'};printf("%d\n",strlen(c));}怎么輸出是7啊,加將c[]換成c[7]或者加上'\0'又對了,strlen函數(shù)是遇到'\0'終止,但是c[7]={'a','b','c'};同樣沒有'/0',但是求長是正確的,我記得系統(tǒng)會默認(rèn)加上'\0'的,例如c[7]={'a','b','c'};系統(tǒng)實際上存的是'a','b','c','\0','\0','\0','\0'。高手幫忙看下為什么strlen求錯了,這種問題該怎么避免?最佳答案:問題出在:char p[]={'a','b','c'},p[]你沒指定長度,系統(tǒng)就不知道,默認(rèn)也為無限長(可以驗證:你輸入p[16]都還可以看到有輸出,因為你沒指定p[16],所以這個輸出是系統(tǒng)隨機(jī)給的),這時你調(diào)用strlen函數(shù)來求“長度未知”的字符串,strlen“很聰明”,它就會給你輸出一個奇怪的7(但不一定只是7,你換個其他長度的字符串它又可能輸出其他數(shù)了)而且:char p[]這種形式下系統(tǒng)是不會在結(jié)尾默認(rèn)加上'\0'的!。只有在指定長度char p[5]={'a','b','c'}或者字符串形式char p[]="abc"的情況下系統(tǒng)才會在末尾默認(rèn)加上'\0',這時就不會出錯。
查看完整描述

3 回答

?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗 獲得超13個贊

如果您的空白內(nèi)存單元比較多的話,那么在數(shù)組最后一個元素'c’之后可能是'\0',那么正好結(jié)束strlen函數(shù),而輸出3,我剛把您的代碼復(fù)制過去,運行了下是3,以前我也不明白為什么,有的時候正確,有的時候錯誤,原因就是沒有在數(shù)組即字符串末尾加'\0',所以賦值最好用字符串,即方便,系統(tǒng)又會自動加結(jié)束符,希望能夠幫到您。

查看完整回答
反對 回復(fù) 2023-03-18
?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗 獲得超8個贊

輸出結(jié)果是不確定的,因為你的char數(shù)組不存在末尾的'\0'
正確的初始化方式應(yīng)該是:char c[] = "abc"; 

補充:
只有字符串形式的初始化,編譯器才會幫你在某位補零
你用的那種方式,得到數(shù)組長度就是3,哪里來有位置補零呢?

查看完整回答
反對 回復(fù) 2023-03-18
?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊

char c[]={'a','b','c'} ; 等價于 cha c[2]="ab";c[2]='c';
而不是 char c[] = "abc"; 這就是區(qū)別, 不知你能不能看得懂

查看完整回答
反對 回復(fù) 2023-03-18
  • 3 回答
  • 0 關(guān)注
  • 140 瀏覽

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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