#include <stdio.h>
int 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]={3,12,9,8,6};
int value = 8;
int index = getIndex(arr , value); //这里应该传什么参数呢?
if(index!=-1)
{
printf("%d在数组中存在,下标为:%d\n",value,index);
}
else
{
printf("%d在数组中不存在。\n",value);
}
return 0;
}
1当把 数组名 传递给一个函数时,实际上传递的事该数组第一个元素的地址。2在被调用函数中,该参数是一个局部变量,因此,数组名参数必须是一个 指针 ,也就是一个存储地址的变量。(也就是被调用函数参数必须是指针才能在主函数数组成员中移动)
数组名所代表的就是就是该数组最开始的一个元素的地址。arr对应的就arr数组首地址。
数组类型的变量或表达式是该数组第0个元素的地址,例如:
p=&a[0]和p=a是等价的,(p是指针,a是数组)
在被调用函数中(getlndex)形式参数中 int arr[]和int *arr是等价的
在调用函数(main)中,由于传递参数是指针,对应主函数传递参量也是指针如;arr,arr+0(指针有移动0位),&arr[0],是正确的,而arr[],arr[5]都是错的
但数组名和指针的一个区别是指针是变量,数组不是变量。p=a和p++是合法的,但a=p和a++是不合法的
恩恩,数组不应该是arr[]这样吗,arr什么鬼可以这样用啊,,