C中的标量类型和聚合类型有什么区别?

she*_*zou 5 c types

我读过一本名为Pointers On C的书,在那本书中,有一种叫做标量类型的类型.
我知道算术类型和指针类型统称为标量类型,但我想知道标量类型和聚合类型之间有什么区别以及使用它们的场合是什么?

hac*_*cks 8

C11-§6.2.5类型(第21页):

算术类型和指针类型统称为标量类型.数组和结构类型统称为聚合类型.46)

标量数据类型只能包含单个数据项,而聚合类型可以包含多个数据项.

int a;             //Scalar Type
char c;            //Scalar Type
float *p;          //Scalar Type
char str[10];      //Aggregate Type
struct s{
    int a;
    float b[5];
} ss;              //Aggregate Type
Run Code Online (Sandbox Code Playgroud)

46)请注意,聚合类型不包含联合类型,因为具有联合类型的对象一次只能包含一个成员.


Jea*_*nès 0

互联网可以成为您的朋友!但是,标量类型是一种对其值(整数、浮点数、指针)存在算术运算的类型,而聚合类型只是一种值是值的元组的类型,即值的聚合、结构体、并且没有自然算术(例如:用名字和年龄描述一个人,你不能将两个人相加或相乘......)。