亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于數組的問題,自定義getindex函數中參數1為arr[5],為什么下面調用的時候參數是arr?我覺得應該是arr[];

#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; ? ?

}


正在回答

2 回答

? ? ? ?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++是不合法的

4 回復 有任何疑惑可以回復我~

恩恩,數組不應該是arr[]這樣嗎,arr什么鬼可以這樣用啊,,

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于數組的問題,自定義getindex函數中參數1為arr[5],為什么下面調用的時候參數是arr?我覺得應該是arr[];

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號