c++將數(shù)組名作為函數(shù)參數(shù)對(duì)數(shù)組元素進(jìn)行相應(yīng)的運(yùn)算
用數(shù)組名做函數(shù)參數(shù)與用數(shù)組元素作實(shí)參有幾點(diǎn)不同:
(1)用數(shù)組元素作實(shí)參時(shí),只要數(shù)組類型和函數(shù)的形參變量的類型一致,那么作為下標(biāo)變量的數(shù)組元素的類型也和函數(shù)形參變量的類型是一致的。因此,并不要求函數(shù)的形參也是下標(biāo)變量。換句話說(shuō),對(duì)數(shù)組元素的處理是按普通變量對(duì)待的。用數(shù)組名作函數(shù)參數(shù)時(shí),則要求形參和相應(yīng)的實(shí)參都必須是類型相同的數(shù)組,都必須有明確的數(shù)組說(shuō)明。當(dāng)形參和實(shí)參兩者類型不一致時(shí),將會(huì)發(fā)生錯(cuò)誤。
(2)用普通變量或下標(biāo)變量作函數(shù)參數(shù)時(shí),形參變量和實(shí)參變量都是由編譯系統(tǒng)分配的兩個(gè)不同的內(nèi)存單元。在函數(shù)調(diào)用時(shí)進(jìn)行的值傳遞是把實(shí)參變量的值賦予形參變量。在用數(shù)組名做函數(shù)參數(shù)時(shí),不是進(jìn)行值的傳遞,即不是把實(shí)參數(shù)組的每一個(gè)元素的值都賦予形參數(shù)組的各個(gè)元素。因?yàn)閷?shí)際上形參數(shù)組并不存在,編譯系統(tǒng)不為形參數(shù)組分配內(nèi)存。因?yàn)閿?shù)組名就是數(shù)組的首地址。因此用數(shù)組名做函數(shù)參數(shù)時(shí)所進(jìn)行的傳遞實(shí)際上是地址的傳遞,也就是把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址后,也就等于有了具體的地址。實(shí)際上是形參數(shù)組和實(shí)參數(shù)組為同一數(shù)組,共同使用一段內(nèi)存空間。
//例:一維數(shù)組score,存放10個(gè)學(xué)生的成績(jī),求平均值。
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
float average(float array[10])
{ int i;
float aver,sum=array[0];
for(i=1; i<10; i++)
sum=sum+array[i];
aver=sum/10;
return aver;
}
void main()
{ float score[10],aver;
int i;
printf("input 10 score:\n");
for(i=0; i<10; i++)
scanf("%f",&score[i]);
printf("\n");
aver=average(score);
printf("average score is %5.2f\n",aver);
}
說(shuō)明:
(1)用數(shù)組名作函數(shù)參數(shù),應(yīng)該在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義數(shù)組。
(2)實(shí)參數(shù)組與形參數(shù)組類型應(yīng)一致,如不一致,結(jié)果將出錯(cuò)。
(3)實(shí)際上,指定被調(diào)函數(shù)中形參數(shù)組的大小是不起任何作用的,因?yàn)镃編譯器對(duì)形參數(shù)組大小不做檢查,只是將形參數(shù)組的首地址傳給形參數(shù)組。
(4)形參數(shù)組也可以不指定大小,定義數(shù)組時(shí)在數(shù)組名后跟一個(gè)空的中括號(hào),為了在被調(diào)函數(shù)中處理數(shù)組元素的需要,可以另設(shè)一個(gè)參數(shù),傳遞數(shù)組元素的個(gè)數(shù)。
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
float average(float array[],int n)
{ int i;
float aver,sum=array[0];
for(i=1; i<n; i++)
sum=sum+array[i];
aver=sum/n;
return aver;
}
void main()
{ float score1[5]= {98.5,97,91.5,60,55};
float score2[10]= {67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};
printf("the average of class A is %6.2f\n",average(score1,5));
printf("the average of class B is %6.2f\n",average(score2,10));
}
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)將字符串轉(zhuǎn)換成整數(shù)
這篇文章主要為大家詳細(xì)介紹了如何用C語(yǔ)言寫(xiě)一個(gè)函數(shù),把字符串轉(zhuǎn)換成整數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04C語(yǔ)言入門學(xué)習(xí)筆記之typedef簡(jiǎn)介
typedef為C語(yǔ)言的關(guān)鍵字,作用是為一種數(shù)據(jù)類型定義一個(gè)新名字,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言入門學(xué)習(xí)筆記之typedef簡(jiǎn)介的相關(guān)資料,需要的朋友可以參考下2021-11-11C++中對(duì)象的動(dòng)態(tài)建立與釋放詳解及其作用介紹
這篇文章主要介紹了C++中對(duì)象的動(dòng)態(tài)建立與釋放詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09