C++用指針變量作為函數(shù)的參數(shù)接受數(shù)組的值的問題詳細(xì)總結(jié)
| 實(shí)參 | 形參 | 實(shí)例 |
|---|---|---|
| 數(shù)組名 | 數(shù)組名 | 1.1 |
| 數(shù)組名 | 指針變量 | 1.2 |
| 指針變量 | 數(shù)組名 | 1.3 |
| 指針變量 | 指針變量 | 1.4 |
本文以輸入10個(gè)整數(shù),然后對其進(jìn)行排序,然后輸出的程序?yàn)槔?/P>
形參為數(shù)組名,實(shí)參是數(shù)組名
實(shí)例代碼1.1:
#include<iostream>
using namespace std;
int main(){
void Sort(int a[],int n);
int a[10],i;
cout<<"Please input 10 interges: "<<endl;
for(i=0;i<10;i++){
cin>>a[i];
}
Sort(a,10);
cout<<"Sorted order:";
for(i=0;i<10;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
void Sort(int a[], int n){
int i,j,k,tool;
for(i=0;i<n;i++){
k=i;
for(j=i;j<n;j++){
if(a[j]<a[k])
k=j;
}
tool=a[k];
a[k]=a[i];
a[i]=tool;
}
}
形參中a[ ]中,可以不寫任何的數(shù)字,只需要表示這是一個(gè)數(shù)組即可。如果其中放數(shù)字的話,可以放置任何一個(gè)正整數(shù)(不一定等于實(shí)參數(shù)組的大小,可以比實(shí)參中的數(shù)組大或者?。?
即:
void Sort(int a[], int n )
也可以寫成
void Sort(int a[2], int n)
或者
void Sort(int a[12], int n)
實(shí)參是數(shù)組名,形參是指針變量
實(shí)例代碼1.2:
#include<iostream>
using namespace std;
int main(){
void Sort(int a[],int n);
int a[10],i;
cout<<"Please input 10 interges: "<<endl;
for(i=0;i<10;i++){
cin>>a[i];
}
Sort(a,10);
cout<<"Sorted order:";
for(i=0;i<10;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
void Sort(int *a, int n){
int i,j,k,tool;
for(i=0;i<n;i++){
k=i;
for(j=i;j<n;j++){
if(a[j]<a[k])
k=j;
}
tool=a[k];
a[k]=a[i];
a[i]=tool;
}
}
在文章《C++一維數(shù)組和指針的關(guān)系總結(jié)》中,已經(jīng)提到數(shù)組名實(shí)際上代表數(shù)組的首元素的地址也就是說a等價(jià)于&a[0]
在實(shí)參中,數(shù)組名代表數(shù)組中的第一個(gè)元素的地址,所以實(shí)參實(shí)際上只傳遞了數(shù)組的第一個(gè)元素的指針。因此,在形參中,只需要一個(gè)指針變量來接受傳遞過來的值即可。
實(shí)參是指針變量,形參是數(shù)組
實(shí)例代碼1.3:
#include<iostream>
using namespace std;
int main(){
void Sort(int a[],int n);
int a[10],i;
cout<<"Please input 10 interges: "<<endl;
for(i=0;i<10;i++){
cin>>a[i];
}
Sort(&a[0],10);
cout<<"Sorted order:";
for(i=0;i<10;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
void Sort(int a[], int n){
int i,j,k,tool;
for(i=0;i<n;i++){
k=i;
for(j=i;j<n;j++){
if(a[j]<a[k])
k=j;
}
tool=a[k];
a[k]=a[i];
a[i]=tool;
}
}
跟上文分析的一致,通過&a[0]作為實(shí)參進(jìn)行傳值,證明了數(shù)組名實(shí)際上代表數(shù)組的首元素的地址也就是說a等價(jià)于&a[0]
形參是指針變量,實(shí)參是指針變量
實(shí)例代碼1.4:
#include<iostream>
using namespace std;
int main(){
void Sort(int a[],int n);
int a[10],i;
cout<<"Please input 10 interges: "<<endl;
for(i=0;i<10;i++){
cin>>a[i];
}
Sort(&a[0],10);
cout<<"Sorted order:";
for(i=0;i<10;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
void Sort(int *a, int n){
int i,j,k,tool;
for(i=0;i<n;i++){
k=i;
for(j=i;j<n;j++){
if(a[j]<a[k])
k=j;
}
tool=a[k];
a[k]=a[i];
a[i]=tool;
}
}
這種方法是最直接了當(dāng)?shù)姆椒?,?shí)參和形參的傳遞的數(shù)值和接受的數(shù)值都是指針
相關(guān)文章
Linux下使用C/C++進(jìn)行UDP網(wǎng)絡(luò)編程詳解
UDP 是User Datagram Protocol 的簡稱,中文名是用戶數(shù)據(jù)報(bào)協(xié)議,是一種無連接、不可靠的協(xié)議,本文主要介紹了如何在Linux下使用C/C++進(jìn)行UDP網(wǎng)絡(luò)編程,有需要的可以了解下2024-10-10
C++ 實(shí)現(xiàn)求小于n的最大素?cái)?shù)的實(shí)例
這篇文章主要介紹了C++ 實(shí)現(xiàn)求小于n的最大素?cái)?shù)的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05
C++中小數(shù)點(diǎn)輸出格式(實(shí)例代碼)
下面小編就為大家?guī)硪黄狢++中小數(shù)點(diǎn)輸出格式(實(shí)例代碼)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
C++控制臺(tái)強(qiáng)化如何實(shí)現(xiàn)一定界面效果(簡潔版)
這篇文章主要介紹了C++控制臺(tái)強(qiáng)化如何實(shí)現(xiàn)一定界面效果(簡潔版),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
Qt利用QScroller實(shí)現(xiàn)home界面滑動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Qt如何利用QScroller實(shí)現(xiàn)home界面滑動(dòng)效果,文中的實(shí)現(xiàn)過程講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-11-11

