大神给我解释一下,为啥第一种是正确结果第二种怎么就不对呢总是输出38在数组中不存在

方法一:

#include<stdio.h>

nt getIndex(int arr[5], int value)

{

int i;

int index;

for (i = 0; i < 5; i++)

{

if (arr[i] == value)

{

index = i;

break;

}

else

index = -1;

}

return index;

}

int main()

{

int arr[5]{ 22,12,19,38,17 };

int value = 38;

int index = getIndex(arr, value);

if (index != -1)

{

printf("%d在数组中存在,下标为:%d\n", value, index);

}

else

{

printf("%d在数组中不存在\n", value);

}

return 0;

}

方法二:

#include<stdio.h>

nt getIndex(int arr[5], int value)

{

int i;

int index;

for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

{

if (arr[i] == value)

{

index = i;

break;

}

else

index = -1;

}

return index;

}

int main()

{

int arr[5]{ 22,12,19,38,17 };

int value = 38;

int index = getIndex(arr, value);

if (index != -1)

{

printf("%d在数组中存在,下标为:%d\n", value, index);

}

else

{

printf("%d在数组中不存在\n", value);

}

return 0;

}


名不见经传的小菜鸟
浏览 767回答 1
1回答

QLoveyourself

sizeof(arr) / sizeof(arr[0])的问题  不能在自定义函数里面用sizeof求数组的长度  你可以在你自定义函数里面做个 int a =sizeof(arr) / sizeof(arr[0]); 然后printf("%d",a);自检一下看看在自定义函数里面求数组长度是多少 
打开App,查看更多内容
随时随地看视频慕课网APP