25 条题解

  • 0
    @ 2025-11-23 20:51:20
    1. 以下数组定义,符合 C++语言语法的是( )。 ○ A. int a[]; ○ B. int b['3']; ○ C. int c[3.0]; ○ D. int[3] d;

    答案是 B

    来,作为教练,我带你像“编译器”一样去审核这四份“内存申请单”,看看谁不合规矩。

    1. 审核 A:int a[]; —— 驳回!

    • 理由“空头支票”
      • 你告诉计算机:“我要申请一块地建数组。”
      • 计算机问:“你要多大?”
      • 你说:“不知道,我不写,我也不放东西进去。”
    • 教练注解:数组必须知道大小。要么你直接写数字(如 a[10]),要么你立刻塞数据进去让它自己数(如 a[] = {1,2})。啥都不干是不行的。

    2. 审核 C:int c[3.0]; —— 驳回!

    • 理由“非法切割”
      • 数组的格子必须是整数个。你见过谁买“3.0 个”或者“3.5 个”座位的吗?
      • 3.0 是小数(浮点数),C++ 的数组下标不支持小数。

    3. 审核 D:int[3] d; —— 驳回!

    • 理由“方言错误”
      • 这是 JavaC# 语言的写法。
      • 在 C++ 里,方括号 [] 是长在变量名后面的(像尾巴),而不是长在类型名后面的。
      • 正确写法:int d[3];

    4. 审核 B:int b['3']; —— 通过!

    • 理由“字符的伪装”
      • 这看起来很怪,但请回忆我在前面讲过的:char 类型本质上就是整数!
      • '3' 是一个字符常量。在 ASCII 码表中,字符 '3' 对应的整数值是 51
      • 所以,这句话在编译器眼里就是:int b[51];
      • 合情合理合法,申请了 51 个整数的空间。

    最终结论

    只有 B 符合 C++ 的语法规则。

    信息

    ID
    4769
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者