1樓:網友
從你的int *t=a;看你把a的位址先儲存,應該是想交換他們的位址達到交換兩數的目的。但要改變指標所指向的位址需要用二級指標(自已可以仔細理解下),所以你應該這樣寫才是交換他們的位址:
void swap( int **a, int **b)int *t= *a;
a= *b;
b= t;上面這個函式呼叫有點麻煩:
int x=9,y=0;
int *p1= &x;
int *p2= &y;
swap( &p1, &p2);
如果是交換位址所指向的位址的內容用一級指標就可以了。
void swap( int *a, int *b)int t=*a;
a= *b;
b=t;這種呼叫也很簡單。
int x, y;
swap( &x, &y);
2樓:電腦——交流
同意樓上的,並提醒在主函式里加return 0; 指標做形參傳遞的位址,如果僅僅是數值傳遞的話,即使改變了數值,也只是形參的數值,並未改變實參的值, 錯誤的原因是當你交換資料時交換的是內容,故要加*(表數值)
c語言中用指標交換資料
3樓:劉一鳴
你的問題是什麼?
void swap2(int *a2,int *b2)
temp2沒有初始化或者賦值吧,int *temp2=a2
用c++編寫乙個利用指標進行資料交換的函式.謝啦~
4樓:網友
用指標變數作為函式引數實現兩個資料的交換。
#include
void swap(int *x,int *y)void main()
5樓:網友
先貼結果:
請輸入2個數,逗號隔開。
2,5a=5,b=2
請按任意鍵繼續。 .
再貼**:#include ""
#include ""
#include ""
void swap(int *a,int *b)main()
c語言裡通過位址傳遞實現值的交換時,指標也隨之改變嗎
6樓:紛採
先來說什麼叫改變指標。
int a =0,b=1;
int *pt;
pt = &a;
改變指標。pt = &b;
可以這樣理解,每個變數都有乙個指標,用 &變數名 這種方式來取得。
你可以這樣驗證指標是否變化。
int a=1,b=0;
printf(&a,&b);
exchange(&a,&b);
printf(&a,&b);
傳址來交換,感覺就是原來指向a的指標去指向b,原來指向b的去指向a。
好像是變化了,其實不然。以下是驗證**。
有人說了,你只改變指標不改變值不行嗎?可這樣的**能執行嗎?
int a=0,b=1;
a = &b;
7樓:萢萢
如果只是交換值的話,指標是不改變的。
關於c語言交換兩個數(有關指標)
8樓:網友
在c語言中,通過函式引數傳遞,進行兩個數的交換,必須採用傳遞指標的方式,同時,在函式中,一定要對兩個指標中的資料內容進行交換才能達到交換實參位址中資料的目的。
如://正確的交換函式。
void swap1(int *p1,int *p2)//錯誤的交換函式。
void swap2(int *p1,int *p2)
9樓:匿名使用者
指標p有自己的位址,該位址存指向的資料的位址,*p就是通過位址找到變數,第二個函式你只是交換了指標變數的位址,位址指向的資料是不會有變化的。
10樓:王勃啊
區別在於。下面的swap你交換的是指標,上面的swap交換的是指標指向的資料。
而交換指標又有什麼用呢? 實際上指標指向的資料還是沒有被交換對吧?
11樓:_欲_念
上面的p你定義的是int的整型變數,而你下面定義的是乙個指標變數,指標變數是指向資料的位址.不能向你下面這直接賦值. 你要定義乙個整型或者別的變數。
指標變數賦值的三種方法。
int i1,i2,i3;
1)int *p1=&i1,*p2=i2; 用整形變數的位址給基型別為整形的指標變數賦值。
2)p1=&i3; 給指標變數賦予變數的位址;
3) p1=p2; 通過指標變數給指標變數賦值;
c語言中用於交換值函式問題,C語言中呼叫函式交換兩個變數的值需要傳遞地址,為什麼相加就可以直接用
因為void gsd int a,int b 中的a和b在呼叫時用實參的值進行拷貝,在函式中交換的只是拷貝過來的副本,所以原來的實參值並沒有發生交換操作。而在void gsd int a,int b 中int 型別使a和b的性質發生了變數,它們是 引用變數 呼叫時它們就成了實參的 別名 就是說在函式...
c語言中用指標賦值字串為什麼不加如下
a cool 這是地址來賦值,將一個常量字串 自的首地址賦值給a這個指標。a cool 這是字元賦值,不是字串 雖然a叫字串指標,但char a這樣的定義,a必然是一個字元,而不是多個。因此後面的常量會被忽略為一個字元,進行數值賦值 也可以理解為拷貝賦值,區別於地址賦值 在a沒有分配地址的情況下,直...
C語言中,用和用的區別
在 結構 一單元中出現的 運算子成為 右箭頭選擇 在使用中可以用new node value 10 來代替 new code value 10 也就是說在結構中,運算子 是運算子 和運算子.的結合,在上述語句中,他先對new node間接定址以定位所指向的結構,然後再選擇結構的成員value。c語言...