我們要清楚的知道,使用指針和引用都可以的傳入函數(shù)的main函數(shù)的變量在局部函數(shù)改變值時,main函數(shù)里面相應(yīng)的變量也會改變值。但他倆的方式不同。
我們先來說指針,指針傳入局部參數(shù)時,他會在創(chuàng)建個局部指針變量,然后把傳入的地址賦值給局部的指針變量,然后修改值,從而使得原main函數(shù)的相應(yīng)變量的值也被修改。
來看代碼:
#include<bits/stdc++.h>
using namespace std;
typedef int* Int;
void chushihua(Int a){
cout<<"AAAA="<<a<<endl;
a=(Int)malloc(sizeof(int));
cout<<"初始化的a等于"<<a<<endl;
}
int main(){
int* a;
cout<<a<<endl;
chushihua(a);
cout<<"主函數(shù)的a的地址為"<<a<<endl;
return 0;
}
結(jié)果:
大家看到了,我們往函數(shù)里傳入指針變量,它創(chuàng)建了一個新的指針變量,并把原指針的存儲的地址0x1給了新創(chuàng)建的指針變量,我們修改新創(chuàng)建得指針變量存儲的值時,舊指針存儲的地址并未改變。
現(xiàn)在使用引用,他不會創(chuàng)建新的指針,而會一直使用舊的指針。
#include<bits/stdc++.h>
using namespace std;
typedef int* Int;
void chushihua(Int &a){
cout<<"AAAA="<<a<<endl;
a=(Int)malloc(sizeof(int));
cout<<"初始化的a等于"<<a<<endl;
}
int main(){
int* a;
cout<<a<<endl;
chushihua(a);
cout<<"主函數(shù)的a的地址為"<<a<<endl;
return 0;
}
結(jié)果:
文章來源:http://www.zghlxwxcb.cn/news/detail-702109.html
我們可以看見一旦我們改變函數(shù)里的地址,main函數(shù)的指針?biāo)娴牡刂芬矔桓淖?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-702109.html
到了這里,關(guān)于c++的引用和指針的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!