關於C語言指標的問題,希望高手幫忙解答一下

時間 2021-05-04 18:27:47

1樓:匿名使用者

先說程式一

void swap(int *px,int*py)如果修改為如下**,那麼就會傳送值的互換

void swap(int *px,int*py)下來看程式二

void fsort(char *name,int n)//name是乙個陣列的首位址

}希望能幫你理解指標

2樓:

你要明白,指標變數有兩個相關的值,乙個是指標變數本身的記憶體位址,乙個是該記憶體位址儲存的資料,是另乙個變數的位址。

如:int *p;//定義乙個指標變數,既然是變數,它本身就有位址,還沒賦值,它裡面的資料不確定。

所以*p=5;是錯誤的,還沒初始化,指向的記憶體位址不確定,要把5儲存到**的記憶體?

指標變數名p表示的是它的值,等於另乙個變數的位址。

如int a;

p=&a;//將a變數的位址儲存在 p變數所在的記憶體空間。

char *pname=; 這裡定義的是乙個指標陣列,陣列的元素是乙個個字串的位址,假設是

將陣列首位址作為實參傳遞給形參

在呼叫函式裡面,因為是位址傳遞,所以可以改變陣列元素的順序,如假設變為

形參改變不會影響實參的值沒錯,pname本身的值也的確沒變,但是陣列元素的順序改變了,指向的字串當然也不同了。

如果還是不懂就畫個草圖,關鍵是 時刻把資料在記憶體中的儲存放在心上。

3樓:匿名使用者

程式一若改為int *pt;* pt=*px; *px=*py;* py=*pt;應該就交換過了。相當於遠端遙控交換;而你的那種寫法僅是在函式內把位址交換。。結束後原數值並沒改變

c語言問題,希望高手能夠幫忙解答一下,謝謝了。

4樓:鈍角111度

#include

int main()

printf("%d\n",a);

return 0;}

5樓:濮方雅

在while裡死迴圈了,你要加上一句在while的花括號裡面

c=a*b;

6樓:匿名使用者

因為你++a之後,c的值根本沒變,程式一直處於死迴圈中。加上c=a*b;吧。

7樓:匿名使用者

因為c永遠不會大於10000所以死迴圈。一直在計算。。

8樓:m_奮鬥

這個while是個死迴圈可好啊,c=a*b加到迴圈體就好了啊。

關於c語言指標的問題,乙個關於c語言指標的問題

二維陣列相當於乙個一維陣列裡面的元素都是一維陣列 二維陣列名也相當於乙個二級指標。一維陣列 a a 0 二維陣列 a a 0 a 0 0 通俗點寫就是a a 0 a 0 a 0 0 因為 a 0 a 0 0 所以a於 a指向同乙個位址 a 0 0 則 a a 0 0 include int main...

C語言指標位址輸出問題,關於C語言指標位址輸出問題

能夠輸出位址值!include main 這個程式就可以 注意變數名,前後要一致,不要用大寫!請將 p改為 p 將最後一行改為 printf x b 你會看得更真切!x 按十六進製制輸出 你把 與 兩個的功能搞錯了 乙個是取位址 乙個是指向 但不取。注意變數名區分大小寫,菜鳥。我沒看出來有什麼不對的...

關於c語言的指標問題指標的位址1問題

小p精神 我來給你寫個例子,你參考一下 int p,q,s int a 3 p a 將a的首位址賦值給p 那麼p指向的值應該是a 0 的值2 printf a 0 d p d n a 0 p q a 0 1 將a 0 的位址向右偏移一位就等於a 1 的位址 a 1 8那麼 q應該等於8 s q 1 ...