在定义中初始化int数组的typedef?

时间:2014-05-11 14:16:01

标签: c initialization typedef

为第一年编程“101”考试做练习题。尝试一下,我不确定它是否可能。

Q值。 提供适合代表10名学生的作业标记的类型定义,并将所有标记初始化为零。

我解释说审查员希望def和初始化一起完成。否则我只是制作一个结构并在之后初始化它。

typedef int foobar[10]; //is accepted but is not initialised
typedef int foobar[10] = {0}; //Error " , expected"
typedef int foobar[10] = {0,0,0,0,0,0,0,0,0,0}; //Error " , expected"

是否有可能做我正在尝试的事情或者必须单独进行初始化?

注意:我之前发现的所有问题都与结构有关,我特意看了一个int数组。

3 个答案:

答案 0 :(得分:2)

  

在定义中初始化int arrray的typedef?

     

...

     

提供适合代表10名学生的作业标记的类型定义,并将所有标记初始化为零。

标题和问题毫无意义或至少是不完整的,因为它没有提及什么来初始化。根据定义无法初始化类型。只能实例化“实例化”类型。所以要么这种分配是不可靠的,要么就是假定对所定义类型的隐式实例化。

然而,做后者,在C中,需要两个步骤来实现这一目标。

  1. 定义类型:

    typedef int[10] Marks;
    
  2. 使用1中定义的类型定义变量并初始化它:

    Marks marks = {0};
    

答案 1 :(得分:1)

  

给出适合表示赋值的类型定义   10名学生的分数和初始化(??)所有分数为零。

单词"已初始化"没有意义。我假设他们要求你"初始化"代替。

  

给出适合表示赋值的类型定义   标记为10名学生,初始化所有标记为零。

所以他们要求你做两件事,"给出一个类型定义"和"初始化所有标记",最好在一行代码(?)中。

什么是类型定义?是否有typedef的内容?我猜不会!我理解为"定义类型的东西"。例如:

struct Marks {int marks[10];};

是的,这件事定义了一个丑陋的名字struct Marks的类型。由于其中没有typedef,您实际上可以在同一行代码中定义该类型的变量并初始化该变量:

struct Marks {int marks[10];} stuff = {{0}};

答案 2 :(得分:0)

回答C ++:

C ++中很少有地方数据类型定义包含任何“值”数据。我只想到几个:

  1. 枚举
  2. 模板参数
  3. 功能参数th haveat具有默认值
  4. 否则,数据和数据类型始终是分开的。您无法在定义中指定类型的初始值。

    你的问题有些令人困惑:你说

    typedef int foobar[10]; //is accepted but is not initialised
    

    理解这只是一个数据类型定义;还没有什么可以初始化。

    foobar x = {0};// this should compile and work fine.
    

    但初始化是在实例化类型时完成的,而不是在类型定义中。