① 指針和引用有什麼區別 請寫一個簡單的程序說明
1.從內存上來講系統為指針分寸內存空間,而引用與綁定的對象共享內存空間,系統不為引用變數分配內容空間。
2指針初始化以後可以改變指向的對象,而引用定義的時候必須要初始化,且初始化以後不允許再重新綁定對象。
3.所以引用訪問對象是直接訪問。指針訪問對象是間接訪問。
4。如果pa是指針,那麼*pa就是引用了。
但是兩者在作為形參的時候非常相似,區別是指針拷貝副本,引用不拷貝。程序如下:
#include<stdio.h>
voidpt(int*pta,int*ptb)
{
int*ptc;
ptc=pta;pta=ptb;ptb=ptc;
}
voidref(int&ra,int&rb)
{
intrc;
rc=ra;ra=rb;rb=rc;
}
voidmain()
{
inta=3;intb=4;
int*pa=&a;int*pb=&b;
pt(pa,pb);
printf("zhen:a=%d,b=%d ",a,b);
ref(a,b);
printf("yinyong:a=%d,b=%d ",a,b);
}
輸出結果如下圖:
② 指針的作用是什麼啊
第一,指針的使用使得不同區域的代碼可以輕易的共享內存數據。當然小夥伴們也可以通過數據的復制達到相同的效果,但是這樣往往效率不太好。因為諸如結構體等大型數據,佔用的位元組數多,復制很消耗性能。
但使用指針就可以很好的避免這個問題,因為任何類型的指針佔用的位元組數都是一樣的(根據平台不同,有4位元組或者8位元組或者其他可能)。
第二,指針使得一些復雜的鏈接性的數據結構的構建成為可能,比如鏈表,鏈式二叉樹等等。
第三,有些操作必須使用指針。如操作申請的堆內存。還有:C語言中的一切函數調用中,值傳遞都是「按值傳遞」的。如果要在函數中修改被傳遞過來的對象,就必須通過這個對象的指針來完成。
(2)指針在程序中有什麼不同地方擴展閱讀
指針的表現形式是地址,核心是指向關系指針運算符「*」的作用是按照指向關系訪問所指向的對象.如果存在A指向B的指向關系,則A是B的地址,「*A」表示通過這個指向關系間接訪問B。
如果B的值也是一個指針,它指向C,則B是C的地址,「*B」表示間接訪問C如果C是整型、實型或者結構體等類型的變數或者是存放這些類型的數據的數組元素,則B(即C的地址)是普通的指針,稱為一級指針,用於存放一級指針的變數稱為一級指針變數。