1樓:山水阿銳
您好,這個要看函式要實現的功能而定,比如void insert(int i,elemtype &e)函式從名字上看其作用就是將整數 i 插入elemtype連結串列 e 中,函式呼叫中對e的值的改變必須在函式外生效,所以應該用第二種形式 void insert(int i,elemtype &e)。
如果要求函式中對實參值的改變不影響函式外的值,則用第一種形式void insert(int i,elemtype e)
void insert(int i,elemtype e)中引數e是值傳遞,呼叫insert函式返回後實參的值不會改變。
而void insert(int i,elemtype &e)中e傳遞的引用,如果insert函式中改變了e的值,相應的實參值也會改變。
比如下面的程式
#include
#include
typedef int elemtype;
void insert(int i ,elemtype& e)
main()
最後列印出來的是e=45,而將void insert(int i ,elemtype& e)改為void insert(int i ,elemtype e)最後列印出來的就是e的原始值e=3
2樓:幻夢·人生
elemtype &e; 其中e是引用。
elemtype* e; 其中e是指標。
引用(reference)是c++對c語言的重要擴充。引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。
宣告方法:型別識別符號 &引用名=目標變數名。
使用方法:直接使用.操作符就可以進行物件操作。
特點:必須進行初始化,且不能通過修改而指向其他物件。
指標(pointer)是程式語言中的一個物件,利用地址,它的值直接指向(points to)存在電腦儲存器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。
宣告方法:型別識別符號 *引用名=&目標變數名。
使用方法:使用(*e).或者e->操作符進行物件操作。
特點:可以初始化為任意值,可以修改指向的物件。
在使用方面,引用可以使用指標進行代替。指標在某些情況下可以使用引用進行代替。
從型別安全的角度考慮,最好多用引用,少用指標。
(elemtype *)是啥意思?
3樓:匿名使用者
elemtype(也有的書上稱之為elemtp)是資料結構的書上為了說明問題而用的一個詞。它是element type(“元素的型別”)的簡化體。
因為資料結構是討論抽象的資料儲存和演算法的,一種結構中元素的型別不一定是整型、字元型、浮點型或者使用者自定義型別,為了不重複說明,使用過程中用“elemtype”代表所有可能的資料型別,簡單明瞭的概括了整體。
例子:elemtype *是定義指向這種型別的指標,p=(elemtype *)malloc(8*sizeof(elemtype)),開闢8個elemtype大小的記憶體空間,把地址分配給指向elemtype的指標p。
elem是單詞element(元素)的縮寫,在程式定義中代表某一不確定的型別,也就是抽象的資料型別。
為了使程式可讀性強,並且便於修改,讓elem代表多種的資料型別,也就是為int、char等等的資料型別,起了一個別名。
在標頭檔案中定義:typedef char elem; 表示:抽象元素型別為char型別,這樣定義之後,下面的程式中elem所定義的元素就是char型別的了。
如果需要修改其型別,直接修改char到其他型別,elem便又代表了所修改的型別資料,這也是方便性的體現。
(elemtype *)具體用法是:
template typedef structsqlist;
之後宣告變數時要賦予elemtype一個已知的型別,比如int。 struct sqlista; 對於a這裡面的elemtype就變成了int。 不過這是c++的內容,c裡面不能用。
如果不用模板,而必須在c語言裡用的話,有兩種方法:
1、之前宣告它 typedef int elemtype;
2、之前預編譯它 #define elemtype int
4樓:匿名使用者
在學資料結構?
elemtype是抽象資料型別的定義啊
你想定義什麼就定義什麼了
elemtype *是定義指向這種型別的指標p=(elemtype *)malloc(8*sizeof(elemtype))
開闢8個elemtype大小的記憶體空間,把地址分配給指向elemtype的指標p
5樓:0不知火舞
通俗的說,elemtype就是由之後資料決定的任意型別
6樓:匿名使用者
一個型別為elemtype的指標
C 中抽象和介面的區別,C 中抽象類和介面的區別
1.類是對物件的抽象,可以把抽象類理解為把類當作物件,抽象成的類叫做抽象類。而介面只是乙個行為的規範或規定,微軟的自定義介面總是後帶able欄位,證明其是表述一類類 我能做。2.介面基本上不具備繼承的任何具體特點,它僅僅承諾了能夠調物帶用的方法 3.乙個類一次可以實現若干個介面,但是只能擴充套件乙個...
C中關鍵字ref和out的區別,c 中ref和out關鍵字的用法,以及有什麼不同,求大神解答,線上等
山東中公優就業 1 兩者都是按地址傳遞的,使用後都將改變原來引數的數值。2 ref可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把一個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。這個就是兩個的區別,或者說就像有的說的,ref是有進有出,out是隻出...
c盤中programfiles和programfiles86區別
小白一鍵重灌系統網 program files的資料夾都是系統盤中安裝軟體的資料夾,其中program files是64位軟體安裝目錄 program files x86 是32位軟體安裝目錄,這是因為64位系統可以相容32位的軟體,但兩者需要區分安裝,使用上沒有區別。以下是詳細介紹 1 這兩個資料...