1樓:東風千里
int initlist(sqlist &l)&表示引用,而c語言中沒有引用,那個是c++中的vc它也識別不了,只是當成warning
對於修改實參值我們都是通過指標來實現的(也可以用函式返回值);
即int initlist(sqlist *l)你那個是將結構體作為實參傳進去的,而不是這個結構體的地址
2樓:匿名使用者
c++支援引用 &引數 這種方式實際上是將形參與實參看作是同一個變數(即使你把實參與形參的名設定成不同的名稱)來操作,比傳地址操作確實方便很多!
但是,c不支援這種方式!
3樓:不宜然
當然可以通過,也許這樣會更清楚:
void func(int nx)
int a = 100;
func(a);
a還是等於100;
//------------------
void func(int &nx)
int a = 100;
func(a);
a等於1000;
因為引用相當於一個別名,如果使用引用,函式內使用的還是本身,否則,是一個臨時拷貝
4樓:匿名使用者
引用傳遞的是地址,速率高,而不用引用,需傳遞整個物件,速率降低
c++中int initlist(sqlist &l)的(sqlist &l)是什麼意思,為什麼要用指標(引用)做引數
5樓:百科夏老師
initlist(sqlist*&l)中的*&l是引用。c++中的概念,int a;int &b=a;這就宣告瞭b是a的引用,經過這樣的宣告後使用a或b的作用相同,都代表同一變數。對變數宣告一個引用,並不另開闢記憶體單元。
函式引數傳遞有兩種情況,有一般的將變數名作為引數,這時傳遞給形參的是變數的值,在執行函式的時候,形參的值發生的變化並不傳遞給實參。
傳遞變數的指標,使形參得到一個變數的地址,這時形參指標變數指向實參變數單元。引進引用後,函式引數的第三種傳遞方式就是傳送變數的別名。
例如:void initlist(sqlist *&l)
l=(sqlist *)malloc(sizeof(sqlist));
l-> length=0;
sqlist *l = null;
initlist(l);
l->...//進行對l的某些操作,那麼你的程式執行良好
在形參表中以符號「&」開始的引數即為引用引數。如果一個形參是引用引數,呼叫部位將把實參的地址傳遞給子程式。子程式可以改變傳遞給引用引數的任何實參,因為子程式操作的是真正的變數,而不是它的副本。
把引數宣告成引用,實際上改變了預設的按值傳遞引數的傳遞機制,在按值傳遞時,函式操縱的是實參的本地拷貝。
引用引數的三種常見用法:
1、需要改變實參的值,比如swap()。引數是引用時,函式接收的是實參的左值而不是值的拷貝。這意味著函式知道實參在記憶體中的位置,因而能夠改變它的值或取它的地址。
2、向主調函式返回額外的結果。
3、向函式傳遞大型的類物件。
6樓:
(sqlist &l) 就是引數型別為sqlist型別的引用;
為什麼要用引用,因為用引用傳參可以在函式內部更改l的資料,不然傳入函式的只是l的一個副本,更改後對原l沒有影響。
高手指點,資料結構裡引數問題?initlist_sq(sqlist &l)和initlist_sq(sqlist *l)有什麼不同?
7樓:匿名使用者
第一個,引用,也就是別名,傳遞的是變數自己
第二個,指標,傳遞的是變數的地址值
第三個,指標的引用,傳遞的是該指標變數自己
c中initlist(sqlist*&l)是什麼意思
8樓:百科夏老師
initlist(sqlist*&l)中的*&l是引用。c++中的概念,int a;int &b=a;這就宣告瞭b是a的引用,經過這樣的宣告後使用a或b的作用相同,都代表同一變數。對變數宣告一個引用,並不另開闢記憶體單元。
函式引數傳遞有兩種情況,有一般的將變數名作為引數,這時傳遞給形參的是變數的值,在執行函式的時候,形參的值發生的變化並不傳遞給實參。
傳遞變數的指標,使形參得到一個變數的地址,這時形參指標變數指向實參變數單元。引進引用後,函式引數的第三種傳遞方式就是傳送變數的別名。
例如:void initlist(sqlist *&l)
l=(sqlist *)malloc(sizeof(sqlist));
l-> length=0;
sqlist *l = null;
initlist(l);
l->...//進行對l的某些操作,那麼你的程式執行良好
在形參表中以符號「&」開始的引數即為引用引數。如果一個形參是引用引數,呼叫部位將把實參的地址傳遞給子程式。子程式可以改變傳遞給引用引數的任何實參,因為子程式操作的是真正的變數,而不是它的副本。
把引數宣告成引用,實際上改變了預設的按值傳遞引數的傳遞機制,在按值傳遞時,函式操縱的是實參的本地拷貝。
引用引數的三種常見用法:
1、需要改變實參的值,比如swap()。引數是引用時,函式接收的是實參的左值而不是值的拷貝。這意味著函式知道實參在記憶體中的位置,因而能夠改變它的值或取它的地址。
2、向主調函式返回額外的結果。
3、向函式傳遞大型的類物件。
9樓:
回答的還算好,但是l不是指標,&作引用講與取地址毫無關係,引用作為形參能使在函式中改變的值在主函式裡相應的值也被改變。
10樓:沙支誇依
這語言應該是在c++裡才能出現的函式宣告吧。
void initlist(sqlist &l);意思是說,引數l是sqlist型別,且引數是以別名傳參出現的。所謂別名的意思說就是,在這個函式中,函式可以修改l的修。
例如
輸出: 20
------------------------------瞭解別名的用法後,我們就知道了。void initlist(sqlist* &l)的意思是說,引數l是sqlist的指標型別。且在函式中可以修改這個指標l。
11樓:搖擺的記憶
你應該把前面呼叫這個函式的一些**貼出來才好應該前面宣告的是 sqlist *l.
因為函式呼叫是值傳遞的,initlist(sqlist*&l),不這樣定義的話,那就在initlist()裡沒有對l進行操作,而是對函式的形參操作的,返回後l根本也沒被分配空間。必須把l的地址傳遞給initlist()才可以的,這樣定義相當於
這樣定義:
sqlist *l
這樣呼叫initlist(&l);
12樓:匿名使用者
是c教材中的函式還是資料結構c描述中的演算法?
c中沒有引用符&,c++中有。如果是c中的函式,它只能被理解為形參l的地址是個基型別為sqlist的指標,相當於sqlist l.
在資料結構c描述中,卻應用了c++中的引用符&。表示l是個基型別為sqlist的指標,並且它被引用,即l在此函式中並不分配記憶體,它直接引用主調函式中的l,在該函式中l的變化將自動帶入主調函式中。
13樓:匿名使用者
l是指向sqlist型別變數的二級指標
void initlist(sqlist &l) 為什麼要加&
14樓:匿名使用者
函式是初始化連結串列
前面 的& 是說 參說 l 是以 引用方式呼叫初始化連結串列當然需要對引數做修改
應該使用引用或者指標形式的引數,引用形式的引數更加安全引用形式的引數只有c++ 才可以
如果是在c程式裡就要使用指標形式的引數
15樓:獨孤冷瀠
這是c++裡面引用的意思:宣告一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元
16樓:江小右
給個簡單的例子
void add10(int &a)
void main()
這裡n為20,如果不是引用的話n=10
同樣的道理
這裡如果不是引用的話l返回後是不會變化的,這裡是插入一個元素,如果不是引用加入後l返回任然是原來的l,下面的操作肯定就對變化後l而言,而實際上不加&的l並沒有任何變化,甚至還是一個空的,你卻當不是空的來處理,自然就出現記憶體.....這樣樓主應該明白了吧 ,不明白咱繼續聊,到你明白為止
17樓:匿名使用者
sqlist應該是一個類(順序連結串列類),然後&指的是引用。這可能是在某個函式中的引數,意思是傳一個sqlist型別的引用。
順序表儲存位置是相鄰連續的,可以隨即訪問的一種資料結構,一個順序表在使用前必須指定起長度,一旦分配記憶體,則在使用中不可以動態的更改。他的優點是訪問資料是比較方便,可以隨即的訪問表中的任何一個資料。
連結串列是通過指標來描述元素關係的一種資料結構,他可以是實體地址不連續的物理空間。不能隨即訪問連結串列元素,必須從表頭開始,一步一步搜尋元素。它的優點是:
對於陣列,可以動態的改變資料的長度,分配物理空間。
在使用中:如果一個陣列在使用中,查詢比較多,而插入,刪除資料比較少,陣列的長度不變時,選順序表比較合理。如果插入,刪除,長度不定的陣列,可以選連結串列。
18樓:本本西祠
引用,c++裡面的。跟指標差不多的東西,但不一樣。搜一下吧。
資料結構順序表中sqlist &l 中為什麼要用&
19樓:匿名使用者
由於函式的引數傳遞是單向值傳遞,若不用&例如在主函式中呼叫 initlist_sq(sqlist l)建立一個順序表l,如下面**,把實參myl的值傳給形參l,在函式中初始化l(賦值),當函式返回時,myl並沒有被初始化,因為形參l不能反向傳給實參。而加上引用&(在c語言中叫帶地址傳遞)就不一樣了,形參l變成實參myl的別名,實參和形參實際是同一段記憶體空間,當然修改形參就是修改實參
int main()
在資料結構中,資料的邏輯結構,資料的儲存結構及資料的運算之間存在著怎麼樣的關係
資料的邏輯結構決定了資料間運算關係的具體定義,而資料的儲存結構與資料的運算方法,沒有直接的關係,資料的儲存結構決定了維護資料邏輯結構時各種操作的運算複雜程度。在資料結構中,資料的邏輯結構,資料的儲存結構及資料的運算之間存在著怎麼樣的 資料的儲存結構及資料的運算之間存在著怎樣的關係 在資料結構中,邏輯...
資料結構中typedefstruct用法
在c語言中,可以使用結構體 struct 來存放一組不同型別的資料。結構體的定義形式為 struct 結構體名 結構體所包含的變數或陣列 結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員 member 結構體定義 第一種 只有結構體...
資料結構中表示什麼意思啊,資料結構中 是什麼意思
樓上的答案不盡完全 和 是分開,也表示指標,但進一步講,它表示後面的root是指向bitree結構型別變數的指標。而 是取地址符,這個在scanf函式中就早有體現,其意義為,傳的是root指標的地址。而傳引數其實傳的都是值,只不過這裡使用了 表示傳的值為一個地址值,以方便在createbitree中...