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)文章
淺析char 指針變量char *=p 這個(gè)語(yǔ)句的輸出問題
下面小編就為大家?guī)?lái)一篇淺析char 指針變量char *=p 這個(gè)語(yǔ)句的輸出問題。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-05-05
使用C++的inipp庫(kù)處理配置文件.ini的示例詳解
一個(gè)ini文件由多個(gè)節(jié)section組成,每個(gè)節(jié)由多個(gè)鍵值對(duì)組成,本文給大家介紹了使用第三方庫(kù)inipp來(lái)操作ini文件,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-01-01
c++ 虛函數(shù)與純虛函數(shù)的區(qū)別(深入分析)
本篇文章是對(duì)c++中虛函數(shù)與純虛函數(shù)的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++?select模型簡(jiǎn)單聊天室的實(shí)現(xiàn)示例
本文主要介紹了C++?select模型簡(jiǎn)單聊天室的實(shí)現(xiàn)示例,使用CMake項(xiàng)目進(jìn)行開發(fā),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
C++ 中CloseHandle 函數(shù)--關(guān)閉一個(gè)句柄
這篇文章主要介紹了C++ 中CloseHandle 函數(shù)--關(guān)閉一個(gè)句柄的相關(guān)資料,需要的朋友可以參考下2017-05-05
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開始了)[六]
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開始了)[六]...2007-02-02
C語(yǔ)言rand和srand函數(shù)使用方法介紹
rand()函數(shù)用來(lái)產(chǎn)生隨機(jī)數(shù),但是,rand()的內(nèi)部實(shí)現(xiàn)是用線性同余法實(shí)現(xiàn)的,是偽隨機(jī)數(shù),由于周期較長(zhǎng),因此在一定范圍內(nèi)可以看成是隨機(jī)的。srand()用來(lái)設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子。參數(shù)seed是整數(shù),通常可以利用time(0)或geypid(0)的返回值作為seed2023-02-02

