A. C中initlist(sqlist*&L)是什麼意思
initlist(sqlist*&L)中的*&L是引用。c++中的概念,inta;int&b=a;這就聲明了b是a的引用,經過這樣的聲明後使用a或b的作用相同,都代表同一變數。對變數聲明一個引用,並不另開辟內存單元。
函數參數傳遞有兩種情況,有一般的將變數名作為參數,這時傳遞給形參的是變數的值,在執行函數的時候,形參的值發生的變化並不傳遞給實參。
傳遞變數的指針,使形參得到一個變數的地址,這時形參指針變數指向實參變數單元。引進引用後,函數參數的第三種傳遞方式就是傳送變數的別名。
例如:
voidinitList(SqList*&L)
{
L=(SqList*)malloc(sizeof(SqList));
L->length=0;
}
SqList*L=NULL;
initList(L);
L->...//進行對L的某些操作,那麼你的程序運行良好
(1)initlist函數c語言擴展閱讀
在形參表中以符號「&」開始的參數即為引用參數。如果一個形參是引用參數,調用部位將把實參的地址傳遞給子程序。子程序可以改變傳遞給引用參數的任何侍散實參,因為子程序操作的是真正的變數,而不是它的副本。
把參數聲明成引用,實際上改變了預設的按值傳遞參數的傳遞機制,在按值傳遞時,函數操縱的是實參的本地拷貝。
引用參數的三種常見用法:
1、需要改變實參的值,比如swap()。參數是引用時,函數接收的是實參的左值而不是值的拷貝。這意味著函薯談迅數知道實參在內存中的位置,因而能夠改變它的值或取它的地址。
2、向主調函數返回額外的結果。
3、向函數傳遞大型的類對象。
B. initlist函數用c語言怎麼寫
#include<stdio.h>
voidAddNumOne(intnum)
{
num+=5;
}
voidAddNumTwo(int*num)
{
*num+=5;
}
intmain()
{
intnum=0;//這神悉老里和定義鏈游升表是一樣的
AddNumOne(num);
printf("%-5d ",num);
AddNumTwo(&num);
printf("%-5d ",num);
return0;
}
(2)initlist函數c語言擴展閱讀
InitList_L()初始化函數
StatusInitList_L(LinkList*L)//初始化線性表
{
*L=(LinkList)malloc(sizeof(Lnode));
if(!(*L))returnERROR;
(*L)->next=NULL;
(*L)->陸慶data=info;
returnOK;
}
C. INITLIST(&L) 中&作用是什麼
INITLIST(&L) 中的&L是INITLIST函數的實參,這個實參是某個類型變數L的引用,也可以理解為取地址。INITLIST(&L)是個初始化鏈表的函數,或者是增加節點或者初始化頭結點配毀,必須要傳給他鏈表頭的真實地址,而不是一個拷貝,不然所做的操作在離開這個函數的時候就沒用了。
(3)initlist函數c語言擴展閱讀:
&的使用注意事項:
1、聲明引用時,必須同時對其培族備進行初始化,不能讓他指向其他變數。
2、引用的聲明符放置在變數名的前面,和*操作符的用法一樣。
3、引用穗啟聲明完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。
4、聲明一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種數據類型,因此引用本身不佔存儲單元,系統也不給引用分配存儲單元。
5、可以建立數組的引用和指針的引用。
D. C中initlist(sqlist*&L)是什麼意思
這語言應該是在C++里才能出現的虛罩芹函差畢數聲明吧。
void
initlist(sqlist
&L);意思是說,參數L是sqlist類型,且參數是以別名傳參出現的。所謂別名的意思說就是,在這個函數中,函數可以修改L的修。
例如:
void
add10(int
&a)
{
a=a+10;
}
void
main()
{
int
n=10;
add(n);
printf("%d",n);
}
輸出:
20
------------------------------
了解別名悶凳的用法後,我們就知道了。void
initlist(sqlist*
&L)的意思是說,參數L是sqlist的指針類型。且在函數中可以修改這個指針L。