指標與引用
阿新 • • 發佈:2022-03-11
C++中指標和引用的應用很常見,連著的使用極易混淆,但是區別很明顯:
1. 指標是變數,而引用只是變數的一個別名,而且引用使得別名與引用物件綁在了一起。
2.指標初始化之後還可以指向其他變數,但是引用只能初始化一次。
3.sizeof 操作的結果不一樣,引用為所指向變數的大小,指標則返回指標本身的大小。
4. 引用不可以為空,但是指標可以是空指標。
#include<cstdio> //引用的用法,引用就相當於給一個物件定義一個別名,作用在引用上的所有操作都與繫結的物件有關。 int main() { int val = 11, val2 = 33; int &refval = val, &refval2 = val2; ///引用必須要初始化,使其繫結到一個變數上 ///修改引用的值將改變其所繫結的變數的值 refval = -22; printf("%d %d\n", val, refval);//輸出為-22,refval的值和val一樣 refval = refval2; //引用一但初始化(繫結),將始終繫結到同一個特定物件上,無法繫結到另一個物件上 printf("%d %d\n", val, refval);//輸出為33,33 return 0; }
引用作為函式的引數
#include<bits/stdc++.h> using namespace std; void swap(int &a,int &b) { int t; t=a; a=b; b=t; } int main() { int x,y; cin>>x>>y; swap(x,y); cout<<x<<" "<<y<<endl; }
指標的引用
#include<bits/stdc++.h> using namespace std; void add1(int * &a) { (*a)++; } void add2(int * &a) { a++; } int main() { int *x; x=new int; printf("%x\n",x); scanf("%d",x); add1(x); cout<<x<<" "<<*x<<endl; add2(x); cout<<x<<" "<<*x<<endl; }