位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

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

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-02

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

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

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

對(duì)于結(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);

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

如果一個(gè)成員類(lèi)型為字符數(shù)組的形式,在輸入時(shí)可以不用加地址符。其實(shí)每個(gè)成員的操作等價(jià)于同等地位的普通變量。例如,對(duì)一個(gè)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ù)組,輸入時(shí)不加地址符*/

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

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

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

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

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

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

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

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

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

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

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

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

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

struct student stul,stu2; 

stul.sno =1001;

strcpy(stul.sname ,"zhangsan");

stul.sage =19;

strcpy(stul.depmt ,"computer"); 

stul.cscore =98;

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

    stul.sname="zhangsan";

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

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

    stu2=stul;

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

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

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

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

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