日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言标量变量是什么,C语言中的结构和联合之间的区别

發(fā)布時間:2025/3/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言标量变量是什么,C语言中的结构和联合之间的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C中的結(jié)構(gòu)

結(jié)構(gòu)是C語言中可用的用戶定義數(shù)據(jù)類型, 它允許組合不同種類的數(shù)據(jù)項。結(jié)構(gòu)用于表示記錄。

定義結(jié)構(gòu):

要定義結(jié)構(gòu), 你必須使用struct聲明。 struct語句定義一種新的數(shù)據(jù)類型, 該數(shù)據(jù)類型具有一個以上或等于一個成員。 struct語句的格式如下:

struct [structure name]

{

member definition;

member definition;

...

member definition;

};

聯(lián)合

聯(lián)合是C語言中可用的特殊數(shù)據(jù)類型, 它允許在同一內(nèi)存位置存儲不同的數(shù)據(jù)類型。你可以定義具有多個成員的聯(lián)合, 但是在任何給定時間只能有一個成員包含一個值。聯(lián)合提供了一種有效的方式, 可以將同一內(nèi)存位置用于多種用途。

定義聯(lián)合:

要定義聯(lián)合, 你必須使用union

語句的定義方式與定義結(jié)構(gòu)時相同。 union語句為你的程序定義了一個新數(shù)據(jù)類型, 該數(shù)據(jù)類型具有多個成員。聯(lián)合聲明的格式如下:

union [union name]

{

member definition;

member definition;

...

member definition;

};

結(jié)構(gòu)與聯(lián)合之間的相似之處

兩者都是用戶定義的數(shù)據(jù)類型, 用于將不同類型的數(shù)據(jù)存儲為一個單元。

它們的成員可以是任何類型的對象, 包括其他結(jié)構(gòu)和聯(lián)合或數(shù)組。成員也可以包含一個位字段。

結(jié)構(gòu)和聯(lián)合都僅支持賦值=和sizeof運算符。分配中的兩個結(jié)構(gòu)或聯(lián)合必須具有相同的成員和成員類型。

結(jié)構(gòu)或聯(lián)合可以按值傳遞給函數(shù), 并按值按函數(shù)返回。參數(shù)必須與函數(shù)參數(shù)具有相同的類型。結(jié)構(gòu)或聯(lián)合通過值傳遞, 就像標量變量作為相應(yīng)參數(shù)一樣。

‘。’運算符用于訪問成員。

差異性

//C program to illustrate differences

//between structure and Union

#include

#include

//declaring structure

struct struct_example

{

int integer;

float decimal;

char name[20];

};

//declaraing union

union union_example

{

int integer;

float decimal;

char name[20];

};

void main()

{

//creating variable for structure

//and initializing values difference

//six

struct struct_example s={18, 38, "srcmini" };

//creating variable for union

//and initializing values

union union_example u={18, 38, "srcmini" };

printf ( "structure data:\n integer: %d\n"

"decimal: %.2f\n name: %s\n" , s.integer, s.decimal, s.name);

printf ( "\nunion data:\n integeer: %d\n"

"decimal: %.2f\n name: %s\n" , u.integer, u.decimal, u.name);

//difference two and three

printf ( "\nsizeof structure : %d\n" , sizeof (s));

printf ( "sizeof union : %d\n" , sizeof (u));

//difference five

printf ( "\n Accessing all members at a time:" );

s.integer = 183;

s.decimal = 90;

strcpy (s.name, "srcmini" );

printf ( "structure data:\n integer: %d\n "

"decimal: %.2f\n name: %s\n" , s.integer, s.decimal, s.name);

u.integer = 183;

u.decimal = 90;

strcpy (u.name, "srcmini" );

printf ( "\nunion data:\n integeer: %d\n "

"decimal: %.2f\n name: %s\n" , u.integer, u.decimal, u.name);

printf ( "\n Accessing one member at time:" );

printf ( "\nstructure data:" );

s.integer = 240;

printf ( "\ninteger: %d" , s.integer);

s.decimal = 120;

printf ( "\ndecimal: %f" , s.decimal);

strcpy (s.name, "C programming" );

printf ( "\nname: %s\n" , s.name);

printf ( "\n union data:" );

u.integer = 240;

printf ( "\ninteger: %d" , u.integer);

u.decimal = 120;

printf ( "\ndecimal: %f" , u.decimal);

strcpy (u.name, "C programming" );

printf ( "\nname: %s\n" , u.name);

//difference four

printf ( "\nAltering a member value:\n" );

s.integer = 1218;

printf ( "structure data:\n integer: %d\n "

" decimal: %.2f\n name: %s\n" , s.integer, s.decimal, s.name);

u.integer = 1218;

printf ( "union data:\n integer: %d\n"

" decimal: %.2f\n name: %s\n" , u.integer, u.decimal, u.name);

}

輸出如下:

structure data:

integer: 18

decimal: 38.00

name: srcmini

union data:

integeer: 18

decimal: 0.00

name: ?

sizeof structure: 28

sizeof union: 20

Accessing all members at a time: structure data:

integer: 183

decimal: 90.00

name: srcmini

union data:

integeer: 1801807207

decimal: 277322871721159510000000000.00

name: srcmini

Accessing one member at a time:

structure data:

integer: 240

decimal: 120.000000

name: C programming

union data:

integer: 240

decimal: 120.000000

name: C programming

Altering a member value:

structure data:

integer: 1218

decimal: 120.00

name: C programming

union data:

integer: 1218

decimal: 0.00

name: ?

如果發(fā)現(xiàn)任何不正確的地方, 或者想分享有關(guān)上述主題的更多信息, 請寫評論。

總結(jié)

以上是生活随笔為你收集整理的c语言标量变量是什么,C语言中的结构和联合之间的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。