无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)組:判斷是否到末尾和獲取size的思考

2021-12-28 21:13 作者:云漢含星  | 我要投稿

數(shù)組:(非char,非string)判斷是否到末尾:

? ? 這兩種方法一直都有被用到,直到我的遇到了一個(gè)明顯能進(jìn)去,但是死活進(jìn)不去的循環(huán)...人都給我整傻了!

? ? 沒錯(cuò),這個(gè)地方的第一項(xiàng)? ( 0 != '\0' ) 判定成了相等,所以沒進(jìn)去循環(huán)!我還特地嘗試了一下。如果存在疑問,用 if 去驗(yàn)證這個(gè)等式。所以此辦法遍歷數(shù)組失效了!

????但是問題又來了,如果使用sizeof()去統(tǒng)計(jì)空間大小,這個(gè)就和初始化數(shù)組的時(shí)候相關(guān)了。

????不指定數(shù)組大小的時(shí)候,就會(huì)默認(rèn)分配當(dāng)前需要的內(nèi)存大小,sizeof得出的空間大小也就是實(shí)際的大小。

????如果指定了大小,那么就會(huì)被分配指定的內(nèi)存,以上面的testNum2數(shù)組舉例,實(shí)際占用了6個(gè)數(shù)據(jù),但是統(tǒng)計(jì)出來時(shí)40個(gè)字節(jié),也就是10個(gè)int的大小。

????這個(gè)問題并非只有在int數(shù)組上體現(xiàn)。

數(shù)組:char :判斷是否到末尾:

字符串轉(zhuǎn)為char[]類型的時(shí)候,實(shí)際上編譯器做了一個(gè)限制!舉個(gè)例子:

這里給三個(gè)char數(shù)組的初始化:后兩個(gè)都分配了6個(gè)字節(jié),因?yàn)?字符串一定會(huì)存在一個(gè)'\0'作為字符串的結(jié)尾標(biāo)識(shí),所以實(shí)際大小會(huì)多一個(gè)。

????所以針對(duì)string可以放心的使用(str[i] != '\0') 作為末尾判定。但是 char[] 在數(shù)據(jù)存滿的情況下,使用 '\0' 判定會(huì)越界。?

????還有一點(diǎn):string使用const char[]實(shí)現(xiàn)的,所以? str[i] = 'x' ;? 這樣子的賦值語法不會(huì)生效,同時(shí)string直接轉(zhuǎn)為char[] 是不可以實(shí)現(xiàn)的。需要自己去遍歷str給char[]賦值。

????所以一個(gè)很矛盾的點(diǎn)在于,其他類型(非string)的數(shù)組使用 “是否等于‘\0’來判斷”是不合理的。但是使用sizeof去統(tǒng)計(jì)字節(jié)的方式,往往不是這個(gè)數(shù)組實(shí)際存儲(chǔ)數(shù)據(jù)的長(zhǎng)度(很多時(shí)候我們是需要定義一個(gè)大的數(shù)組去應(yīng)對(duì)一個(gè)未知的數(shù)據(jù))

????所以對(duì)于長(zhǎng)度不確定,并存在0的int數(shù)組,我們沒有辦法用sizeof或者!='\0'的方法直接獲取實(shí)際有效長(zhǎng)度。可以把非數(shù)據(jù)部分寫為沒有意義的一個(gè)數(shù),以此作為判斷結(jié)尾的標(biāo)志。

還有一點(diǎn):string類型需要使用size()方法。


數(shù)組:判斷是否到末尾和獲取size的思考的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
南靖县| 云浮市| 巧家县| 通海县| 城步| 仁布县| 英吉沙县| 新昌县| 凤山市| 金塔县| 安达市| 涪陵区| 灌南县| 雷山县| 泸定县| 尚志市| 阿鲁科尔沁旗| 盐亭县| 蓝田县| 清徐县| 冕宁县| 潞城市| 乳山市| 屏南县| 定远县| 叶城县| 涟水县| 南宫市| 原阳县| 阜新市| 肥东县| 许昌县| 同德县| 敖汉旗| 怀仁县| 罗甸县| 搜索| 阿巴嘎旗| 沂水县| 齐河县| 精河县|