C語言不用指標交換是什麼原理,為什麼C語言中陣列中的元素交換函式不用指標,而整形變數需要?

時間 2022-02-26 17:20:16

1樓:

這是c++引用傳遞,不是c,引用又叫別名,

就是用另乙個名字表示,同一物件的意思。

引用傳遞,編譯器,實際上暗地裡採用了指標語法;

是另一種位址傳遞方式,和pascal的 var 引數一致

c語言沒有真正的位址傳遞方式,全部都是值傳遞,

不過可以通過指標的值傳遞,模擬位址傳遞方式。

不過要有明確的表示,形參為指標型別,實參為變數位址,

這樣就可以模擬址傳遞方式,真正起作用的是指標語法 *p ;和取址符&

&可以獲取變數和陣列的位址

*可以獲取位址p中儲存的值,

陣列名可以當做陣列首位址

這樣c就可以間接改變變數的值。

exchg2(int &x, int &y)//引用引數含義是:在函式 exchg2中傳遞過來的實參暫時叫x,y

// 函式 exchg2 一切改變x,y的操作實際是對相應實參的操作

// 函式 exchg2 一切使用x,y的操作實際是使用相應實參的操作

main()

//概念上:引用就是所引用物件本身,引用是用另乙個名字表示的同一物件!

//實現上:編譯器暗中用乙個指標表示引用,用這個指標所指的值表示引用的值,

用這個指標的值表示引用的位址,從而即可以實現位址呼叫,

又可以表達引用語義(引用是物件的別名,代表物件本身),

print(「a=%d,b=%d\n」, a, b);}

2樓:匿名使用者

用指標進行交換的原理是對位址所指的值進行了改動而&符號引數傳入的就是位址,當然可以交換

&是取位址符號你總知道吧

你用指標時p=&x;

用指標函式時就是把&x傳到函式裡去了

而這個函式直接就是&x,當然原理和指標的一樣

3樓:

這是c++的引用傳遞方式。int &x,和int &y把x和y都宣告成了引用,這樣就可以直接在函式中交換數值了。我的理解是這只是提供了一種比指標簡便的寫法,實質上傳遞的還是變數的位址即指標。

4樓:veket的小號

位運算中 按位異或 的特點

請參考 計算機專業 離散數學 的教材

5樓:匿名使用者

把變數a的值和變數b的值分別發給另兩個變數x,y; 因為x,y和a b分別是兩個不同的變數,所以在呼叫函式中只是改變了,x, y 。並沒有改變到a b。

6樓:歲月哪曾斑駁

這個不是c,這個是c++。

為什麼c語言中陣列中的元素交換函式不用指標,而整形變數需要?

7樓:

因為陣列名就是指標,當然c語言是這樣的,並不是所有語言如此。。。

8樓:匿名使用者

第二個將函式改為 void swap2(int *i,int *j)

求大神解答錯誤 c語言中如何不用指標交換兩個變數的值 為什麼a,b的值不能回到主函式

9樓:匿名使用者

程式本bai

身就有問題,按du照你寫的程式zhi的意思,應該是要交dao換兩個程式回的值,而按照c語言的實答現方式必須要用到指標不可,程式可以按照以下的方式實現,兩個陣列的長度必須相同,否則會出現陣列下標越界的錯誤

void swap(int a,int b,int n)//此處的陣列已經被弱化成了指標

return;

}int main()

;int b[5] = ;

swap(a,b,5);

printf("%d,%d

",a[0],b[0]);//列印出陣列a和陣列b沒有意義return 0;}

10樓:匿名使用者

實參是指標型別,而形參為整型,型別不一致,出錯!修改swap函式如下:

void swap(int *a,int *b)

c語言用swap交換兩個串的值,不用指標

c語言指標的用法是什麼?

11樓:風吹的小羊

指標是c語言中廣泛使用的一種資料型別。運用指標程式設計是c語言最主要的風格之一。

利用指標變數可以表示各種資料結構;能很方便地使用陣列和字串;並能象組合語言一樣處理記憶體位址,從而編出精練而高效的程式。指標極大地豐富了c語言的功能。

學習指標是學習c語言中最重要的一環,能否正確理解和使用指標是我們是否掌握c語言的乙個標誌。

同時,指標也是c語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多程式設計,上機除錯。只要作到這些,指標也是不難掌握的。

c++和c語言的不同:關於函式,作用是交換2個數的值,如果不用指標,也不用&,那麼c語言可以交換,

12樓:流星不死

不c++是c的公升級 理論上具有c的90%以上的所有功能交換2個數的值 必須指標 或者 &

其實指標 和 & 是乙個東西

都是位址型別

不能使用形參 因為乙個函式的終結會 釋放記憶體還有一種方法是使用static靜態變數 或者 全域性變數

13樓:匿名使用者

不是。c語言只有指標,而c++多了個引用(語法糖,相當於自動間接引用的*const)。 如果c++不使用引用或者指標傳遞的話,是不能直接修改實際引數的,同樣如果c語言不使用指標也不能修改實際引數的。

14樓:匿名使用者

c++基本可以相容所有c的**,c++在c的基礎上增加了類和物件導向的思想。

呼叫函式時都是把實參的值賦值給形參,如果不用指標給位址的話都是形參的值在變化。

如果傳的是位址的話就是對實參進行操作,是把實參的位址賦給了形參可以理解成傳的是實參的控制權而不是實參的值。

15樓:

不是的,c能做的c++一樣能做,c++只是功能上有新的。主要是物件導向的東西。基本的運算什麼的是一樣的。

C語言 為什麼不用指標,c 中,用不用指標有什麼區別?

什麼時候用指標,什麼直接用變數要看具體的情況。用指標速度比用變數會有所提高,那是指傳遞結構體等大型變數時。這時用指向結構體的指標來代替結構體變數可以減少結構體拷貝的過程。比如 struct a int n int m int fun1 struct a x return int fun2 struc...

C語言中,怎麼交換指標陣列裡的值

程式主要通過冒泡法使用函式strcmp比較兩指標所值字串大小,通過臨時指標交換兩指標指向,實現字串排序,如下,程式功能,從小到大排序10個字串 include include void bubble sort char a,int n int main int argc,char argv 儲存10...

c語言關於為指標的指標分配記憶體的問題

首先 int 是一個二級指標,它是指標的指標,如果你要申請一個二維陣列,有下面兩個方法 int val int malloc sizeof int 10 int i for i 0 i 10 val i int malloc sizeof int 10 然後你可以這樣引用 val m n value...