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