請教C語言問題,忘高手指教下,請教一個C語言問題,忘高手指教下。

2023-01-11 15:01:08 字數 649 閱讀 5740

1樓:匿名使用者

注意你的程式,是用指標作為形參。

也就是說當你呼叫prt(&a,&b,&c);的時候,系統會在prt函式執行中,定義三個區域性變數,int *x,int *y,int*z,這三個指標分別指向你傳入的a,b,c。

當你對這三個指標所指向的值做改變的時候,也就是對abc做了改變,這個也就是所謂的傳遞地址。

但是請注意,你使用指標z可以來改變c的值,但是指標z裡面存放的僅僅是c的地址,而且是一個函式prt裡面的區域性變數,你改變z的值之後,只能使其不再指向c,而沒有其他任何作用,實際你對z++後取值都是非法的,只不過編譯器裡面沒有給予你警告。

原理我上面說明白了,而正是因為是區域性變數,prt函式執行完之後,那些區域性變數也都沒有了,所以你呼叫100次z的值都不會改變的,因為你改變的不是指向的量,而是區域性變數本身。

明白了不,多看幾遍

2樓:

你的不是傳址方式傳遞引數

第一次和第二次都沒有修改c的地址

#include

int a=10,c=20,b=40;

void prt(int *x,int *y,int*z)// c的地址傳遞給z,z的地址與c的地址在記憶體中是2個不同的地址,z++對c沒有任何影響

void main()

請教C語言程式設計模擬考題問題。

1.注意區分一下 define s 2 3 和 define s 2 3 在這個程式中,define s 2 3 所以s 4 2 3 4 14 如果是 define s 2 3 那麼 s 4 2 3 4 20 對於巨集定義,只要原樣將他帶入計算就可以了,不要主觀的加括號2.對於無符號數s來說,s和s...

求高手指教c語言函式怎麼返回結構體

include stdio.h struct abc void main void struct abc x y y myabc printf d d p n d d p n x.a,x.b,x.p,y.a,y.b,y.p include include include struct people ...

請教一下C語言的問題

當要求使用volatile 宣告的變數的值的時候,系統總是重新從它所在的記憶體讀取資料,即使它前面的指令剛剛從該處讀取過資料。而且讀取的資料立刻被儲存。通俗的說,就是時刻更新的意思。編譯系統可能會優化程式,常用的變數放在cpu的暫存器裡運算。這時如果你去記憶體中尋找這個變數的話,它可能是個意料之外的...