為什麼不能轉換a,b的值呢,為什麼a的轉置乘以b,是a乘以b的轉置的不得零的特徵值?

時間 2022-03-12 21:00:06

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 支援對方,就算他 她做得並不完美。在眾人面前,當她說...