c语言标量变量是什么,C语言中的结构和联合之间的区别
C中的結構
結構是C語言中可用的用戶定義數據類型, 它允許組合不同種類的數據項。結構用于表示記錄。
定義結構:
要定義結構, 你必須使用struct聲明。 struct語句定義一種新的數據類型, 該數據類型具有一個以上或等于一個成員。 struct語句的格式如下:
struct [structure name]
{
member definition;
member definition;
...
member definition;
};
聯合
聯合是C語言中可用的特殊數據類型, 它允許在同一內存位置存儲不同的數據類型。你可以定義具有多個成員的聯合, 但是在任何給定時間只能有一個成員包含一個值。聯合提供了一種有效的方式, 可以將同一內存位置用于多種用途。
定義聯合:
要定義聯合, 你必須使用union
語句的定義方式與定義結構時相同。 union語句為你的程序定義了一個新數據類型, 該數據類型具有多個成員。聯合聲明的格式如下:
union [union name]
{
member definition;
member definition;
...
member definition;
};
結構與聯合之間的相似之處
兩者都是用戶定義的數據類型, 用于將不同類型的數據存儲為一個單元。
它們的成員可以是任何類型的對象, 包括其他結構和聯合或數組。成員也可以包含一個位字段。
結構和聯合都僅支持賦值=和sizeof運算符。分配中的兩個結構或聯合必須具有相同的成員和成員類型。
結構或聯合可以按值傳遞給函數, 并按值按函數返回。參數必須與函數參數具有相同的類型。結構或聯合通過值傳遞, 就像標量變量作為相應參數一樣。
‘。’運算符用于訪問成員。
差異性
//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: ?
如果發現任何不正確的地方, 或者想分享有關上述主題的更多信息, 請寫評論。
總結
以上是生活随笔為你收集整理的c语言标量变量是什么,C语言中的结构和联合之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c 语言 string库,C语言编程必备
- 下一篇: c语言fsetpos是什么,fsetpo