C++用指針變量作為函數(shù)的參數(shù)接受數(shù)組的值的問題詳細總結(jié)
更新時間:2013年10月17日 09:24:28 作者:
以下是對C++中用指針變量作為函數(shù)的參數(shù)接受數(shù)組的值的問題進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
實參 | 形參 | 實例 |
---|---|---|
數(shù)組名 | 數(shù)組名 | 1.1 |
數(shù)組名 | 指針變量 | 1.2 |
指針變量 | 數(shù)組名 | 1.3 |
指針變量 | 指針變量 | 1.4 |
本文以輸入10個整數(shù),然后對其進行排序,然后輸出的程序為例:
形參為數(shù)組名,實參是數(shù)組名
實例代碼1.1:
復(fù)制代碼 代碼如下:
#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ù)字,只需要表示這是一個數(shù)組即可。如果其中放數(shù)字的話,可以放置任何一個正整數(shù)(不一定等于實參數(shù)組的大小,可以比實參中的數(shù)組大或者小)。
即:
復(fù)制代碼 代碼如下:
void Sort(int a[], int n )
也可以寫成
復(fù)制代碼 代碼如下:
void Sort(int a[2], int n)
或者
復(fù)制代碼 代碼如下:
void Sort(int a[12], int n)
實參是數(shù)組名,形參是指針變量
實例代碼1.2:
復(fù)制代碼 代碼如下:
#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ù)組的首元素的地址也就是說a等價于&a[0]
在實參中,數(shù)組名代表數(shù)組中的第一個元素的地址,所以實參實際上只傳遞了數(shù)組的第一個元素的指針。因此,在形參中,只需要一個指針變量來接受傳遞過來的值即可。
實參是指針變量,形參是數(shù)組
實例代碼1.3:
復(fù)制代碼 代碼如下:
#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ù)組名實際上代表數(shù)組的首元素的地址也就是說a等價于&a[0]
形參是指針變量,實參是指針變量
實例代碼1.4:
復(fù)制代碼 代碼如下:
#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;
}
}
這種方法是最直接了當?shù)姆椒ǎ瑢崊⒑托螀⒌膫鬟f的數(shù)值和接受的數(shù)值都是指針
相關(guān)文章
C++實現(xiàn)LeetCode(97.交織相錯的字符串)
這篇文章主要介紹了C++實現(xiàn)LeetCode(97.交織相錯的字符串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07C語言使用普通循環(huán)方法和遞歸求斐波那契序列示例代碼
這篇文章主要介紹了C語言使用普通循環(huán)方法和遞歸求斐波那契序列示例代碼,大家參考使用吧2013-11-11