1樓:
在fun()函式中,進行了的指標交換,對數值本身沒有影響。也就是x從指向數值a的地址,變為指向數值b的地址,而y從指向數值b的地址,變為指向數值a的地址,但是a,b數值本身沒有變化。從主函式fun(x,y)呼叫,是把引數x、y指標本身的地址進行交換,這樣對於你列印的數值 printf("%d %d",a,b);,不會產生任何變化。
如果,把fun()函式中,
int *k;
k=a;a=b;b=k;改為
int k;
k=*a;*a=*b;*b=k;
這樣就是對fun()函式的引數傳遞過來的指標指向的數值交換了。此時a、b本身的數值交換了。
或者printf("%d %d",a,b);
改為printf("%d %d",*x,*y); 因為x指向的數值地址為數值b的地址,y指向的數值a的地址,列印出來的數值結果是交換了,但a、b數值本身不變化。
2樓:倒黴熊
void fun(int *a,int *b)
main()
3樓:匿名使用者
main函式裡 錯誤
main()
{fun(?,?) // 這? 應該是x,y對應的地址而不是你現在的值。}
4樓:匿名使用者
你應該輸出x,y而不是a,b
5樓:
fun(x,y);
就是說 在fun裡
a=xb=y然後你讓a和b 換了一下
x和y其實沒變
6樓:明亮之光
你的子函式有問題,子函式中a,b是單獨開闢的的儲存空間,你交換完啊a,b兩個變數地址後,子函式結束,子函式中的a,b儲存空間釋放,對主函式沒影響,下面的程式應該行,我試過可以了
void fun(int *a,int *b)
main()
7樓:匿名使用者
int *k;
改成int k;
8樓:微俊
你只是交換了指標的地址 而不是地址所對應的數交換了
c語言中這個關於a,b通過指標交換時,a,b的值為什麼沒有交換?
9樓:匿名使用者
p1=&a;//p1指向
了ap2=&b;//p2指向了b
p= p1;//p指向了a
p1=p2;//p1指向了b
p2=p;//p2指向了a
所以p= p1;p1=p2;p2=p; 三句執行以後只是將指標的指向做了改變,並沒改專變a,b的值
屬所以 a,b還是原值
通過指標修改變數值應該用
*p=123
10樓:匿名使用者
正如你所理解bai的 p1不指向a了 p2也不指向b了
通過指標交換將p1指向了dub p2指向了a,那麼zhi通過指標p1,p2訪問a,b的時候:p1指向b的地址,輸出daob;p2指向a的地址,輸出a.如第一條輸出語句所示.
但是a,b實際上是沒有任何變化的,因為從頭到尾他們沒有參加任何運算
11樓:砍侃看
其實原因你自己都已經說了,如果a
為什麼a的轉置乘以b,是a乘以b的轉置的不得零的特徵值? 10
12樓:電燈劍客
假定你這裡a和b都是n維列向量
顯然rank(ab^t)<=1, 所以ab^t至少有n-1個特徵值是0, 餘下的那個可能非零的特徵值設成u
注意ab^t的所有特徵值的和為trace(ab^t)=trace(b^ta)=b^ta=a^tb, 所以u=a^tb
為什麼我按SHIFT CTRL不能轉換輸入法
平衡小丑 其實這種情況我也遇到過 你如果用的是搜狗輸入法,你可以刪除並重新安裝一下。或開啟設定,改變一下快捷鍵,因為你的電腦這兩個鍵有問題 你可以試著改變一下快捷鍵,沒關係的 如果還不行,那可能就是鍵盤的問題。希望對你有幫助。 就是輸入法與系統不相容 換一個輸入法就ok了 為什麼我的搜狗輸入法按sh...
a b 1 1 b的最小值為什麼不能直接令1 b所以b 2a a 1 3然後均值不等式
解 在不等式 1 a 2 b 2 2 ab 中,a 0 b 0因為,當1 a 2 b 即 b 2a 時,取等號 但2 2 ab 不是1 a 2 b的最小值,因為2 2 ab 不是常數,它會隨a b的變化而變化。如你上面,當a 1 3時,b 2 3代入1 a 2 b得 1 a 2 b 3 3 6 而實...
為什麼愛情不能長久,為什麼愛情不能長久呢?
敏夏侯雲 保鮮愛情要學會溝通的技巧 1 要談就要有誠意地談。沒有誠意只用技巧是不會有效果的,這隻會使對方感到你在敷衍他 她 要談就要有誠意。帶著煩躁與憤怒去談任何事,很容易導致爭吵衝突。因此,一定要在自己心態變好時去與對方交談,交流意見和思想。2 支援對方,就算他 她做得並不完美。在眾人面前,當她說...