c++中數組作為形參時,傳遞的是值還是地址?


c++中數組作為形參時,傳遞的是值還是地址?

運行如下程序

using namespace std;
int a[100]={1,2,3,4,5,6,7,8,9};
void cit( int b[100]){//將a的地址傳給b,修改a相當於修改b 
	b[1]=1113;//這里其實修改的是a[1]; 
	cout<<b[1]<<endl;
}
int main(){
	
	cout<<a[1]<<endl;//輸出數組的第一個元素 
	cout<<a<<endl;//輸出數組的地址 
	//char d='A';
	cit(a);
	cout<<a[1];
	return 0; 
}

  

 

 

 運行結果:

1.說明:數組作為形參時,傳遞的是地址

在函數中修改數組就相當於修改了原數組。

注意:函數還可以這樣寫

void cit( int b[]){//將a的地址傳給b,修改a相當於修改b 
	b[1]=1113;//這里其實修改的是a[1]; 
	cout<<b[1]<<endl;
}

 

傳遞時,相等於把數組的首地址傳過去了,這樣可以不設定數組元素的個數。

如果想傳遞數組元素的個數,可以這樣寫數組

void cit( int b[],int n){//將a的地址傳給b,修改a相當於修改b 
	b[1]=1113;//這里其實修改的是a[1]; 
	cout<<b[1]<<endl;
}

 調用 cit(a,8)

2.你猜如果調用cit(a+4,4)會把數組的那個地址傳過去呢? 

對,第5個元素a[4]的地址

using namespace std;
int a[100]={1,2,3,4,5,6,7,8,9};
void cit( int b[],int n){//將a的地址傳給b,修改a相當於修改b 
	b[1]=1113;//這里其實修改的是a[5],因為b[0]對應的是a[4]; 
	cout<<b[1]<<endl;
}
int main(){
	
	cout<<a[1]<<endl;//輸出數組的第一個元素 
	cout<<a<<endl;//輸出數組的地址 
	//char d='A';
	cit(a+4,4);
	cout<<a[1]<<endl;
	cout<<a[5]<<endl;
	return 0; 
}

  輸出結果如下:

 

 3.如果只想把數組的值傳遞到函數中,不然函數修改數組的值,應該怎么辦呢?

void cit(const int b[],int n)

這樣如果函數中不小心修改了數組,則會彈出錯誤提示

使用const意味着在函數cit中將數組視為只讀數據。

下面的程序就會出錯誤提示

void cit(const int b[],int n){//將a的地址傳給b,修改a相當於修改b 
	b[1]=1113;//這里其實修改的是a[5],因為b[0]對應的是a[4]; 
	cout<<b[1]<<endl;
}

 總結:處理數字的C++函數,必須將數組中的數據類型,數組的起始位置和數組中元素數量提交給它;傳統方法是將數組名(首地址)作為一個參數,數組長度作為第二個參數。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM