指標變數指向的變數的值變了,指標變數會不會變

時間 2021-08-30 10:38:45

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可以指向二維陣列中的任何一個...