提问者:小点点

在这种情况下,b是标量对象吗?


#include <stdio.h>

int main(void) 
{
    char b[5];
    scanf("%4s%4s", b, b);
    printf("%s", b);
}

标量对象的确切定义是什么?在这种情况下,b是标量对象吗?


共2个答案

匿名用户

根据c11标准,“算术类型和指针类型统称为标量类型。数组和结构类型统称为聚合类型

所以不,b不是标量,因为它是一个数组。如果它是一个数字或指针(如char*b),它将是一个标量类型。

匿名用户

引用自ISO/IEC 9899:2018 (C18),6.2.5(类型)/21:

“算术类型和指针类型统称为标量类型。数组和结构类型统称为聚合类型。47)”

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

“标量对象的确切定义是什么?”

标量对象是仅由单个实体组成的对象,例如指针和算术类型的对象。

“在这种情况下,b是标量对象吗?”

< code>b不是标量对象,因为标量对象只保存一个实体。像< code>b这样的数组是“集合”。< code>scanf中的数组指针衰减(" %4s%4s ",b,b);和< code>printf("%s ",b);不会改变< code>b仍然是数组类型。

相关问题