關於c語言指標問題,為什麼會出現這樣的現象

2021-12-19 14:23:41 字數 1430 閱讀 8843

1樓:

這裡採用的是地址傳值,會改變相應記憶體的值。 值傳遞好比是你把檔案複製一份,通過網路傳給他,然後他可以在他本機上對檔案做任何的修改,修改會儲存下來,但是你機器上的檔案不會發生任何的變化。即形參與實參是兩個不同的變數,各自佔用不同的儲存單元。

地址傳遞好比是你把檔案在網路上的地址告訴他人,他人通過網路訪問你機器上的檔案,他可以對檔案進行修改並儲存,此時,檔案的內容就會發生變化。即形參與實參是相同的變

2樓:匿名使用者

指標代表的是地址,你將x的地址賦值給了指標p,將y的地址賦值給了q,又用函式swap對兩個指標進行了交換,即交換了兩個變數的地址,所有x,y的地址已經交換了,所以他們的值也就交換了

int main()

這樣修改為什麼變成了3,5和5,3?關於這個問題 你交換的只是地址p和地址q 二x,y沒有動 如果你給交換的是*p和*q的話就和你函式的結果一樣了

3樓:生秋

因為p,q已經等於x,y的地址,所以改變的就是x,y的值

關於c語言指標問題!

4樓:飛翔的蠍子大叔

關於int *p1=123這個問題我看了很多資料,在這裡我發表一點看法,該問題非常好,這是c語言需要規範的地方。int *p1=123 是非法操作,指標表示地址,地址=123???我是沒有見過這種操作。

地址一般用二進位制、八進位制、十六進位制表示,123表示地址根本就是扯淡!

這個語句的目的就是給指標賦值,正確的方式應該為:

int a=123, *p1;

p1=&a;

執行一下就明白了:

#include

void main()

5樓:匿名使用者

我給樓主一個解釋,希望對樓主有幫助。有不懂的可以繼續追問哦首先得從你的定義開始

樓主要區別

int *p=123;和int *p;*p=123;

前者是定義一個指標變數,它指向一個地址123,後者是定義一個指標變數,再在這個指標指向的地址裡賦予123這個值。

所以兩個123是不同含義的。一個代表地址,一個代表數值。

所以最好輸出的時候,是把p1指向的地址和p2指向的地址的值輸出來了。

6樓:

p1是指標沒錯,但是地址也是一個值 ,你把它%d整型輸出,所以輸出123

7樓:我有兩把刷子誰要

*p1 = 123 表示把123當做地址賦給了指標變數,故所得的值一樣

8樓:匿名使用者

main()

{ int a=123;

int *p1,*p2;

*pi = 123;

p2=&a;

printf("%d,%d",p1,*p2);

關於C引數的問題。為什麼引數都用指標型別

方便資料帶回,如果是直接int的話在函式內部對資料進行修改以後原資料 即呼叫點處的資料 是沒有變化的,函式能提供給呼叫點的只有一個返回值,而有的時候只有一個返回值是不夠的,所以就需要用指標,在函式內部對資料本身直接修改,才函式結束之後直接這個資料就已經是改過的了,比如strcpy,gets之類的,引...

關於c語言指標和地址問題

針對第一個問題 是取地址符號,資料在計算機中儲存,有相應的地址能夠找到.陣列頭部就相當於一個指標,如果float x n 那麼x代表著陣列中的首地址,由於陣列在記憶體佔用的是連續儲存空間.因此也可以用指標去得到它的資料.你呼叫陣列的時候,其實也就是傳遞陣列的首地址給函式,那麼就不需要 符號了.然而你...

感覺出現問題 為什麼會出現這樣的問題?

現靜下來。感情的問題有的時候是讓人身不由己。你出現的那種情況可能是你沒遇到最讓你心動的男孩。有時間可以出去旅遊放鬆哈。感情的付出很需要努力的。下次的相親你肯定會成功的!我覺得這是你的心理問題了。如果在交往了很多男孩之後 還是不能將自己完全的融入的話 可能你要適當的關注一下自己的心理吧 我有一朋友 初...