課程
/后端開(kāi)發(fā)
/C
/C語(yǔ)言入門(mén)
代碼中index=-1是表達(dá)什么? 把-1換別的數(shù)字也沒(méi)影響。
2019-02-17
源自:C語(yǔ)言入門(mén) 6-6
正在回答
當(dāng)然可以不寫(xiě)成「return -1;」,這里只是隨便選用了「-1」這個(gè)數(shù)來(lái)代表數(shù)組中沒(méi)有找到需要查找的值的情況下,函數(shù)getIndex()的返回值。在這種情況下,數(shù)組中需要查找的值,也就沒(méi)有相應(yīng)的下標(biāo)(從0開(kāi)始的正整數(shù)),所以就隨便選了一個(gè)不會(huì)和數(shù)組下標(biāo)混淆的整型值來(lái)代表數(shù)組中不存在查找值的情況。你也可以用「-2」、「-3」等任何一個(gè)不會(huì)與數(shù)組的下標(biāo)混淆的整型值來(lái)表示,然后同時(shí)把main()函數(shù)中的if()判斷的條件也改一下就可以了。
另外,在C語(yǔ)言中,數(shù)組的下標(biāo)可以是負(fù)數(shù),比如a[-1]是指向a[0]的前一個(gè)元素,但是問(wèn)題在于a[-1]到底是什么是無(wú)法預(yù)知確定的,所以是不建議這么用的,因?yàn)镃語(yǔ)言不會(huì)對(duì)數(shù)組是否下標(biāo)越界、溢出等異常進(jìn)行警告或處理,這樣用很可能會(huì)影響系統(tǒng)運(yùn)行,出現(xiàn)不可知的結(jié)果。
所以,只需要記住數(shù)組的下標(biāo)是從0開(kāi)始的正整數(shù),那么負(fù)整數(shù)必然就不是數(shù)組的下標(biāo),所以上面的代碼里就可以用任何一個(gè)負(fù)整數(shù)來(lái)代表沒(méi)有合適的數(shù)組下標(biāo)的情況了。
前面?
#include <stdio.h>
int getIndex(int arr[5],int value)
{
? ? int i;
? ? int index;
? ? for(i=0;i<5;i++)
? ? {
? ? ? ?/* 請(qǐng)完善數(shù)組查詢(xún)功能 */
? ? ? ?if(arr[i]==value)
? ? ? ?{
? ? ? ? ? ?index=i;
? ? ? ? ? ?break;
? ? ? ?}
? ? ? ?else
? ? ? ?index=-1;
? ? ? ?}??
? ? ? ?
? ? }
? ? return index;
}
int main()
? ? int arr[5]={3,12,9,8,6};
? ? int value = 8;
? ? int index = getIndex(arr , value);? ? ? //這里應(yīng)該傳什么參數(shù)呢?
? ? if(index!=-1)
? ? ? ? printf("%d在數(shù)組中存在,下標(biāo)為:%d\n",value,index);? ? ? ? ? ? ?
? ? else
? ? ? ? printf("%d在數(shù)組中不存在。\n",value);? ??
? ? return 0;? ??
if里面當(dāng)找出所要的東西,返回i;要不就返回-1;所以下面就是當(dāng)返回不是-1.即有返回值時(shí)。所以下面等于-1是邏輯正確代碼,而不用-1,也是正確的只不過(guò)在邏輯上說(shuō)不通
舉報(bào)
C語(yǔ)言入門(mén)視頻教程,帶你進(jìn)入編程世界的必修課-C語(yǔ)言
4 回答表達(dá)式1?表達(dá)式2:表達(dá)式3中判斷表達(dá)式1
3 回答表達(dá)式是什么?
3 回答為什么初始值(表達(dá)式1)必須是2?
1 回答4-1中補(bǔ)償代碼是什么啊
2 回答表達(dá)式2中的數(shù)值表達(dá)式有什么意義?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢(xún)優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2019-02-22
當(dāng)然可以不寫(xiě)成「return -1;」,這里只是隨便選用了「-1」這個(gè)數(shù)來(lái)代表數(shù)組中沒(méi)有找到需要查找的值的情況下,函數(shù)getIndex()的返回值。在這種情況下,數(shù)組中需要查找的值,也就沒(méi)有相應(yīng)的下標(biāo)(從0開(kāi)始的正整數(shù)),所以就隨便選了一個(gè)不會(huì)和數(shù)組下標(biāo)混淆的整型值來(lái)代表數(shù)組中不存在查找值的情況。你也可以用「-2」、「-3」等任何一個(gè)不會(huì)與數(shù)組的下標(biāo)混淆的整型值來(lái)表示,然后同時(shí)把main()函數(shù)中的if()判斷的條件也改一下就可以了。
另外,在C語(yǔ)言中,數(shù)組的下標(biāo)可以是負(fù)數(shù),比如a[-1]是指向a[0]的前一個(gè)元素,但是問(wèn)題在于a[-1]到底是什么是無(wú)法預(yù)知確定的,所以是不建議這么用的,因?yàn)镃語(yǔ)言不會(huì)對(duì)數(shù)組是否下標(biāo)越界、溢出等異常進(jìn)行警告或處理,這樣用很可能會(huì)影響系統(tǒng)運(yùn)行,出現(xiàn)不可知的結(jié)果。
所以,只需要記住數(shù)組的下標(biāo)是從0開(kāi)始的正整數(shù),那么負(fù)整數(shù)必然就不是數(shù)組的下標(biāo),所以上面的代碼里就可以用任何一個(gè)負(fù)整數(shù)來(lái)代表沒(méi)有合適的數(shù)組下標(biāo)的情況了。
2019-02-17
前面?
#include <stdio.h>
int getIndex(int arr[5],int value)
{
? ? int i;
? ? int index;
? ? for(i=0;i<5;i++)
? ? {
? ? ? ?/* 請(qǐng)完善數(shù)組查詢(xún)功能 */
? ? ? ?if(arr[i]==value)
? ? ? ?{
? ? ? ? ? ?index=i;
? ? ? ? ? ?break;
? ? ? ?}
? ? ? ?else
? ? ? ?{
? ? ? ?index=-1;
? ? ? ?}??
? ? ? ?
? ? ? ?
? ? ? ?
? ? }
? ? return index;
}
int main()
{
? ? int arr[5]={3,12,9,8,6};
? ? int value = 8;
? ? int index = getIndex(arr , value);? ? ? //這里應(yīng)該傳什么參數(shù)呢?
? ? if(index!=-1)
? ? {
? ? ? ? printf("%d在數(shù)組中存在,下標(biāo)為:%d\n",value,index);? ? ? ? ? ? ?
? ? }
? ? else
? ? {
? ? ? ? printf("%d在數(shù)組中不存在。\n",value);? ??
? ? }
? ? return 0;? ??
}
if里面當(dāng)找出所要的東西,返回i;要不就返回-1;所以下面就是當(dāng)返回不是-1.即有返回值時(shí)。所以下面等于-1是邏輯正確代碼,而不用-1,也是正確的只不過(guò)在邏輯上說(shuō)不通