位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 結(jié)構(gòu)體變量的引用

提問人:劉團圓發(fā)布時間:2020-12-02

定義了一個結(jié)構(gòu)體變量后,就可以對它進行賦值、輸入、輸出、計算等操作。

(1)對結(jié)構(gòu)體變量的輸入操作

不可以用scanf()函數(shù)對一個結(jié)構(gòu)體變量整體進行輸入操作,對于結(jié)構(gòu)體變量的輸入必須通過引用其各成員來進行。

對于結(jié)構(gòu)體變量成員的引用形式為: 

    結(jié)構(gòu)體變量.成員名

例如:

struct date

{

    int year;

    int month; 

    int day;

}dl;

scanf("%d%d%d",&d1.year,&dl.month,&dl.day);

為一個date型結(jié)構(gòu)體變量d1輸入各個成員的值。

如果一個成員類型為字符數(shù)組的形式,在輸入時可以不用加地址符。其實每個成員的操作等價于同等地位的普通變量。例如,對一個student型變量的各成員輸入數(shù)據(jù):

struct student stul;       /*定義student結(jié)構(gòu)體型變量stul*/

scanf("%d",&stul.sno);     /*輸入stul的sno成員的數(shù)據(jù)*/

scanf("%s",stul.sname);    /* sname為字符型數(shù)組,輸入時不加地址符*/

scanf("%d",&stul.sage);    /*輸入stul的sage成員的數(shù)據(jù)*/

scanf("%s",stul.depmt);    /*,depmt為字符型數(shù)組,輸入時不加地址符*/

scanf("%f"&stul.cscore);   /*輸入stul的cscore成員的數(shù)據(jù)*/

可以看到,sname及depmt都是字符型數(shù)組,在為這兩個成員輸入數(shù)據(jù)時不用加地址符“&”。

(2)對結(jié)構(gòu)體變量的輸出操作

    同輸入一樣,也不可以用printf()函數(shù)對一個結(jié)構(gòu)體變量進行整體輸出操作,只能逐個輸出結(jié)構(gòu)體變量的每個成員。例如,輸入前面定義的student型變量stul的各個成員數(shù)據(jù):

printf("%d",stul.sno); 

printf("%s",stul.sname); 

printf("%d",stul.sage); 

printf("%s",stul.depmt);

printf("%f",stul.cscore);

(3)對結(jié)構(gòu)體變量的賦值操作

對于結(jié)構(gòu)體變量的賦值,可以對其中的每個成員賦值,例如:

struct student stul,stu2; 

stul.sno =1001;

strcpy(stul.sname ,"zhangsan");

stul.sage =19;

strcpy(stul.depmt ,"computer"); 

stul.cscore =98;

    定義了兩個student結(jié)構(gòu)體型變量stul、stu2,為stul中的各個成員分別賦值。需要注意的是sname成員、depmt成員都是字符數(shù)組的形式,不能直接用賦值號賦值,如下形式是錯誤的:

    stul.sname="zhangsan";

必須使用字符串復(fù)制函數(shù)strcpyO實現(xiàn)將一個字符串常置賦給結(jié)構(gòu)體中的字符串型成員。

C語言中結(jié)構(gòu)體變量支持整體賦值。例如,stu1中各個成員都已賦值,那么,可以使用如下形式將stu1整體賦給stu2變量。:

    stu2=stul;

(4)結(jié)構(gòu)體變量作為函數(shù)參數(shù) 

結(jié)構(gòu)體變量作為函數(shù)參數(shù)時可以有兩種形式:

①將結(jié)構(gòu)體變量的成員作為函數(shù)的實參,形參為普通變量或數(shù)組。如果結(jié)構(gòu)體變量的某個成員是普通變量類型,作為實參,形參也是一個普通變量,參數(shù)傳遞就是變量到變量的值傳遞的形式。如果結(jié)構(gòu)體的某個成員是數(shù)組,作為實參,形參也應(yīng)該是一個數(shù)組,傳遞方式為地址傳遞,形參所做的改變能夠帶回實參。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部