❶ 大一c語言編程簡單問題,這兩個基於指針的程序有何區別謝謝各位大神
這兩個小程序很好的說明了指針變數與普通變數的區別,首先我們要清楚指針指向的是一塊兒存儲區域,而這個存儲區域裡面存放著我們放如的數據
地址001 002 004 005
數據10 20 40 50
我們拿上面的兩組數據示意一下,
左邊程序里邊定義的是指針類型的變數temp,顯而易見p1 p2也是兩個指針,我們可以假p1=001,p2=002;
右邊程序里邊定義的是普通類型的變數temp,顯而易見p1 p2也是兩個指針,在這個程序裡面p1=004,p2=005,
左邊程序第一步:p1=temp;也就是把001給了temp,
第二步:p1=p2;也就是把002給了p1,此時p1的指向發生了變化,它指向的那塊兒內存不再指向10,而是指向了002這塊兒地址所存放的數據,也就是20,
第三步: p2=temp;也就是把001給了p2,此時的p2的指向放生了變化,它指向的那塊兒內存不再指向20而是指向了001這塊兒地址所存放的數據,也就是10,
右邊程序它沒有改變指針的指向,而是直接改變的指針所指向的內存裡面的數據,自己可以一步步分析一下,你可以的,呵呵呵
❷ 指針和引用有什麼區別 請寫一個簡單的程序說明
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);
}
輸出結果如下圖: