1樓:匿名使用者
a還是指向p1,b還是指向p2啊
只不過p1和p2的值互轉了
你說的情況可以這樣寫
int *t=a;
a=b;
b=t;
這樣的話a指向p2,b指向p1,但是p1和p2的值還是原先的值不過不建議這樣寫
2樓:匿名使用者
*a和*b的值互換,也就是p1和p2的值互換,注意是「值」的互換,不是變數名
3樓:匿名使用者
不會變指標變數中存的是地址,地址中存的是資料,資料變化不影響地址變化
4樓:陳躍悅
呵呵,不會變的,你可以把指標理解成一個存放地址的東西,所有的賦值形式,都是對其所存放的地址的改變,然後就是所說的指向這個地址(是記憶體地址)的內容了
5樓:匿名使用者
不會。你把指標變數想像成你的手,指向的變數想像成你手上拿的東西,你把左右手拿的東西互換了,你的左右手難道會互換麼?
6樓:田風子風
這是一個很常見的問題,答案是a和b的值沒有變化,因為交換的是指標,值並沒有交換,交換後相當於:
b=&p1;
a=&p2;
7樓:
不會,指標就像個現實中的地址,雖然一塊地方時過境遷,但那塊地方不會變
8樓:匿名使用者
a指向p1的地址。b指向p2的地址,交換a,b的內容後,a,b指向的地址沒有改變。
9樓:魚鳥狗
指標是地址,不變,只是地址上的值變了
10樓:匿名使用者
不會變的,輸出a,b,可以看到地址值不變
c語言中的指標為什麼會改變變數的值?
11樓:匿名使用者
電腦科學中,指標(pointer)是程式語言中的一個物件,利用地址,它的值直接指向(points to)存在電腦儲存器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。因此,將地址形象化的稱為「指標」。
意思是通過它能找到以它為地址的記憶體單元。
簡而言之,指標儲存的是記憶體實體地址,通過實體地址,你能夠操作變數的值,效果和通過識別符號操作變數的值完全相同。
例如:int a=10; //a是一個整形識別符號,通過a,你能夠操作記憶體當中一塊4位元組長的空間。
int* p=&a;//p是一個整形指標符,裡面儲存的是a的記憶體地址。
*p=5; //這裡*p的意思就是操作p儲存那塊4位元組的記憶體,效果和a=5相同。
12樓:匿名使用者
pa=&a;句是將指標*pa指向變數a。pa存放的是a的地址,*pa其實就是a,可以理解為把a換了一個名字表示。*pa=20就是對a進行賦值操作,等於a=20;a的值當然改變了。
看看指標的知識吧!
13樓:匿名使用者
一、指標的地址就是變數的地址啊 *pa = 20; 就是改變pa指向的變數的值 就是改變a的值 二、如果你把pa的地址改變了 就是說不指向a的地址了 此時你在 使用 *pa = 20; 就不會改變a的值了
14樓:匿名使用者
pa=&a;把指標指向變數a的首地址,然後賦值pa=20;a的地址就改變了
指標指向不同型別資料時,指標變數佔用多大空間?
15樓:時方仲孫曄
變數的指標就是變數的地址。存放變數地址的變數是指標變數。即在c語言中,允許用一個變數來存放指標,這種變數稱為指標變數。
因此,一個指標變數的值就是某個變數的地址或稱為某變數的指標。
為了表示指標變數和它所指向的變數之間的關係,在程式中用「*」符號表示「指向」,例如,i_pointer代表指標變數,而*i_pointer是i_pointer所指向的變數。
因此,下面兩個語句作用相同:
i=3;
*i_pointer=3;
第二個語句的含義是將3賦給指標變數i_pointer所指向的變數。
16樓:貝茉光盼香
在c中,
指標只有3種:
指向簡單變數的,
指向結構體變數的,
指向函式的.
他們的大小和指向的型別無關,
基本都是一樣的,
等於地址寬度.
在16位的地址的系統裡,
用段:偏移
來表示一個地址,
當只用偏移的時候(段內)稱為near指標,當段偏移都用的時候(跨段),
稱為far指標,
far指標佔用空間大於near指標.
但是在32位系統中,
指標大小是統一的.
在c++中,
指向簡單變數,
簡單結構體物件,
和簡單函式的指標是和c一樣的.
但是,對於有多繼承的物件,
指標可能需要記錄一些額外的資訊,
可能會更大一些.
你可以用
sizeof(xx)來測試各種指標的大小,需要注意的是,
不同的編譯器結果可能不一樣.
最後的結果是:
一般而言,
指標大小是固定的,
並不因為其指向的物件型別而改變.
然而並不總是這樣.
17樓:王一是個好青年
指標變數佔用空間大小等於地址寬度。
指標變數的大小和指向的型別無直接關聯,基本都是一樣的,等於地址寬度。
同一編譯器下,同一編譯選項下所有型別的指標變數大小都是一樣的,指標變數的大小是編譯器所對應的系統環境所決定的,或者說是由編譯器決定的。
指標變數是指存放地址的變數。因地址的改變而做出指定性質的衡量變法。
18樓:逢茂表正奇
c,指標3種:
指向簡單變數
,指向結構體變數
,指向函式.指向
型別關,
基本都,
等於址寬度.
16位址系統,
用段:偏移
表示址,
用偏移候(段內)稱
near指標,
段偏移都用
候(跨段),
稱far指標,
far指標佔用空間
於near指標.
32位系統,指標
統.c++,
指向簡單變數,
簡單結構體
象,簡單函式指標c
.,於繼承
象,指標
能需要記錄
些額外資訊,能更
些.用sizeof(xx)
測試各種指標
,需要注意,同
編譯器結能.
結:般言,
指標固定,並
其指向象型別
改變.並總.
改變指標的值會改變指標原來所指的值嗎
19樓:
p1=p2,難道不會改變p1原本指向的a的值嗎?指標內部儲存的是地址,不會有連鎖反
版應嗎?
將p2賦值給p1,當然權不會改變p1原本指向的變數a的值,這個只是讓指標p1指向變數b,即p1存放的值變成了
變數b的地址,但是變數a的值沒有發生任何變化。
指標變數的值和指標指向的記憶體空間的值是兩個不同的概念,前者存放的是地址,後者是這個地址裡面存放的資料,你要弄清楚,不能弄混淆。
你改變了指標變數的值,只是改變指標的指向,要想改變指標指向的記憶體空間的資料值,則需要使用指標運算子"*"。
20樓:匿名使用者
歲暮歸南山(孟浩然)
c++,函式裡形參是指標,在函式裡改變指標所指向的地址時,主函式裡實參地址是否會改變
21樓:匿名使用者
不會的,你可以用形參指標改變實參指標裡面的數,但形參指標地址改變,實參指標是不會改變的 ,這也就是為什麼c語言中講兩個數交換的時候,為什麼必須寫成*p的形式的原因。
22樓:未來需努力點綴
不會抄這種情況好比:
函式裡的形參是一般變數,在函式裡面改變變數的值,不會改變主函式裡實參的值
指標就是地址變數 在函式裡改變地址變數的值時 不會改變主函式實參地址變數的值
只有在函式裡改變指標所指向的變數的值時 主函式實參指標所指向的變數的值才會改變
樓主可以自己在電腦上實踐一下
希望你懂了哈
為什麼指標變數作為實參在函式中會改變值而普通變數不會呢?
23樓:手機使用者
指標變數,是指向地址的變數,它存放的是所指向的地址,普通變數存放的就是 普通資料,~~,
vc 指標變數賦值問題,指標變數賦值方式
雖然b是正確答案,但是對cd的理解不對。a,p是對地址為p的記憶體賦值,因為p還未賦值,這種行為是危險的b,陣列的首址可理解為一個常量指標 即指向的地址不能改變的針 雖然指標不能被修改,但是其指向的地址的內容是可以改的。c。a是常量,其地址不能被修改 d。錯誤在於對引用a的初始化,應該使用相同型別 ...
指標和變數
寫在函式定義裡的引數叫形參。寫在函式呼叫裡的引數叫實參。實參能把實參當時的數值傳到函式計算定義塊裡。但不一定能把函式塊裡的資料加工結果帶回來。函式運算結果要帶 用函式的地方,有幾種辦法 1 全域性量。2 函式返回值。3 通過實參帶回。想用實參帶回,c語言規定,凡要通過實參帶回的量,它對應的形參必須宣...
普通的指標變數可以指向二維陣列嗎
麥香甜甜圈 當然可以。因為二維陣列在記憶體中也是按照一維方式存放的 記憶體單元是一維的 下面有個參考程式你可以試試。include void main int p a printf d n p 結果輸出1,將 p改寫成 p 1 則輸出2,改寫成 p 7 則輸出8,可見 p可以指向二維陣列中的任何一個...