c语言 指针 a= amp b,c语言初学-引用和指针的异同点
注:(const指針在這里代表的是指向變量的指針,常指針不考慮)
相同點:1.一個const引用可以引用一個非const變量
int a = 3;
const int& b = a;
一個const指針可以指向一個非const變量
int a = 3;
const int* b = &a;
2.一個const引用可以引用一個const變量
const int a = 3;
const int& b = a;
一個const指針可以指向一個const變量
const int a = 3;
const int* b = &a;
3.一個非const引用不可以引用一個const變量
const int a = 3;
int& b = a;//是錯誤的,可以通過b來改變的a的值,但是a在這里是常量,不可以改變
一個非const指針不可以引用一個cosnt變量
const int a = 3;
int* b = &a;//是錯誤的,可以通過b來改變的a的值,但是a在這里是常量,不可以改變
4.指向的都是變量的內存地址。
不同點:1.引用是一個變量的另外一個名字
定義方式:
int a = 3;
int& b = a;//儲存的是值
指針是一個變量的拷貝,復制體
int a = 3;
int* b = &a;//儲存的是地址
2.定義:
引用只能對已經存在的變量或對象實現引用
而指針則不需要,可以定義為空;
3.傳參:
如果傳遞的是一個引用,意味著這個變量或對象已經存在了;
如果傳遞的是一個指針,則不能判斷這個指針是不是有效的,是不是空的 ... ...
所以,引用較為安全。
雖然傳引用較為安全,但是也是利用指針來實現的,所以指針的效率要比引用高一些。
4.引用直接去訪問變量,不用分配自己的內存空間,而指針是間接訪問,需要有自己的內存空間
例子:
//傳引用實現兩個變量的值的交換
#include
void sw(int &,int &);//聲明
int main(int argc,char *argv[]){
int a = 100;
int b = 999;
sw(a,b);
printf("a=%d\n",a);
printf("b=%d\n",b);
}
void sw(int& x,int& y){
int temp = 0;
temp = x;
x = y;
y = temp;
}
//傳引用直接可以把定義的兩個變量賦給函數
//而傳指針要定義兩個指針,然后進行傳遞
#include
void sw(int *,int *);//聲明
int main(int argc,char *argv[]){
int a = 100;
int b = 999;
int* x = &a;//定義指針
int* y = &b;//定義指針
sw(x,y);//傳指針
printf("a=%d\n",a);
printf("b=%d\n",b);
}
void sw(int* x,int* y){
int temp = 0;
temp = *x;
*x = *y;
*y = temp;
}
總結
以上是生活随笔為你收集整理的c语言 指针 a= amp b,c语言初学-引用和指针的异同点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 雅马哈摩托国三125离合器多少公里要更换
- 下一篇: 压路车和洒水车一样吗?