雙指針
為秦皇島等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及秦皇島網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都做網(wǎng)站、網(wǎng)站制作、秦皇島網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
C語言結構體傳參
?
小-黯
原創(chuàng)
關注
7點贊·2315人閱讀
目錄
C語言結構體傳參
1. 普通傳參
1.1 測試代碼
1.2 測試結果
1.3 結果分析
2. 單指針傳參
2.1 修改結構體數(shù)據(jù)
2.1.1 測試代碼
2.1.2 測試結果
2.1.3 結果分析
2.2 修改結構體地址
2.2.1 測試代碼
2.2.2 測試結果
2.2.3 結果分析
3. 雙指針傳參
3.1 測試代碼
3.2 測試結果
3.2 結果分析
C語言結構體傳參
結構體傳參包括三種傳參方式
普通傳參:函數(shù)接收到結構體參數(shù)后,會復制一份原來的結構體作為形參供函數(shù)使用,而函數(shù)內(nèi)的任何操作都是對拷貝結構體的修改,不會影響到原本的結構體變化。
單指針傳參:函數(shù)接收的是一個結構體的地址,該指針指向的是結構體起始地址,也就相當于傳入了結構體內(nèi)所有變量的地址,函數(shù)接收到該結構體指針后,我們就可以根據(jù)地址訪問結構體中每個變量的真實數(shù)據(jù),在函數(shù)內(nèi)對結構體內(nèi)數(shù)據(jù)的操作,都會影響到原本結構體內(nèi)數(shù)據(jù)的變化
雙指針傳參:函數(shù)接收的是結構體指針變量的地址,因為一級指針代表的是結構體的地址,在函數(shù)中能夠操作結構體內(nèi)的數(shù)據(jù),則二級指針指向的是結構體的地址,則同理我們可以根據(jù)二級指針訪問修改結構體的地址
即通過一級指針,對結構體內(nèi)數(shù)據(jù)的操作會影響到原本結構體內(nèi)數(shù)據(jù)的變化
而通過二級指針,對結構體地址的操作會影響到原本結構體地址的變化,例如為結構體分配空間
1.可以把結構體作為參數(shù)啊,
2.不去取地址的意思,是引用的意思,函數(shù)執(zhí)行時修改L的值,就直接的修改了實參的值,相當于地址傳遞了。
3.真正調(diào)用的時,如下:
SqList
tempStruct;
InitList_Sq(tempStruct)
這樣就可以了。
呵呵
1、結構體數(shù)組傳給指針,實質上是不可能的,本質上傳的是數(shù)組首地址,根據(jù)偏移來操作數(shù)組,這樣看起來好像是真在操作數(shù)組一樣。就和普通指針一樣使用,只不過它是結構體數(shù)組。
2、例程:
typedef?struct?Student
{
char?name[10]?;
int?age?;
}Student;
#define?LEN?10?
//print?all?Student?infomation
void?fun(Student?*pStu,int?len)
{
int?i?;?
for(i?=?0?;i??len?;++i)
{
printf("%s\t%d",pStu[i].name,pStu[i].age)?;
}
}
int?main?()
{
Student?stu[LEN]?;
fun(stu,LEN)?;
}
網(wǎng)頁名稱:c語言結構體當做函數(shù)參數(shù),C語言函數(shù)的形參
URL鏈接:http://aaarwkj.com/article20/hsocjo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站制作、營銷型網(wǎng)站建設、自適應網(wǎng)站、App設計、網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)