C 是否在定义内初始化int array的typedef?

C 是否在定义内初始化int array的typedef?,c,initialization,typedef,C,Initialization,Typedef,为一年级编程101考试做练习题。尝试一些东西,但我不确定它是否可能 给出适合代表10名学生作业分数的类型定义,并将所有分数初始化为零 正如我解释的,考官希望def和初始化一起完成。否则,我只需要创建一个结构,然后初始化它 typedef int foobar[10]; //is accepted but is not initialised typedef int foobar[10] = {0}; //Error " , expected" typedef int foobar[10] = {

为一年级编程101考试做练习题。尝试一些东西,但我不确定它是否可能

给出适合代表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数组。

C++的答案: <>在C++中数据类型定义中包含的任何值数据很少。我只能想到几个:

枚举类型 模板参数 函数参数至少有默认值 否则,数据和数据类型总是分开的。不能在定义中指定类型的初始值

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

typedef int foobar[10]; //is accepted but is not initialised
理解这只是一个数据类型定义;没有任何东西需要初始化

foobar x = {0};// this should compile and work fine.
但是初始化是在实例化类型时完成的,而不是在类型定义中

是否在定义内初始化int array的typedef

给出适合代表10名学生作业分数的类型定义,并将所有分数初始化为零

标题和问题毫无意义,或者至少是不完整的,因为它没有提到初始化什么。不能根据定义初始化类型。只能初始化实例化的类型。因此,要么此分配是不可填充的,要么需要假定定义类型的隐式实例化

然而,在C语言中,实现后者需要两个步骤

定义类型:

typedef int[10] Marks;
使用1中定义的类型定义变量。并将其初始化:

Marks marks = {0};
给出适合表示赋值的类型定义 10名学生的分数,并草签??所有分数归零

“初始化”这个词没有意义。我想他们会要求你进行初始化

给出适合表示赋值的类型定义 为10名学生打分,并将所有分数初始化为零

所以他们要求您做两件事,给出一个类型定义并初始化所有标记,最好是在一行代码中

什么是类型定义?是不是里面有typedef?我想不是!我把它理解为定义类型的东西。例如:

struct Marks {int marks[10];};
是的,这东西定义了一个带有丑陋名字struct标记的类型。由于其中没有typedef,您实际上可以在同一行代码中定义该类型的变量并初始化该变量:

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

请选择C或C++!也许您希望使用一个构造函数执行适当初始化步骤的类?很难看出,因为你已经标记了答案C和C++!抱歉,更正。坦白说,你正在研究的问题令人震惊。在C语言中,定义typedef时不能提供初始值设定项。规范中不清楚它们的含义;学生是否有需要跟踪的ID或姓名?它是针对单个作业还是针对多个作业?该结构将用于什么用途?没有更多的上下文,我不知道预期的答案是什么。而且,在C语言中,如果使用结构标记{char name[10];int-mark;}marks[10]={{him,10},…};,则只能将初始值设定项与类型定义混合使用;。老实说,我会回答一些类似的问题,这是一个写得很糟糕的问题。类型定义A.k.A.typedef无法初始化,因此这就是答案。如果它的意思是“给出一个适合表示10名学生作业分数的类型定义,创建一个该类型的对象,并将该对象表示的所有分数初始化为零”,那么答案可以是typedef unsigned int marklist[10];标记列表标记={0};因为没有提供任何其他所需数据的信息。以后请排除这样的问题。请确认您的答案对C++ BLH有效。我将把它放在这里,以防C++中的任何人。上面的评论与此一致,不能一劳永逸。谢意应该是{{0}};@说你是对的;但我听说在C中,{0}经常被用作惯用的零初始化。{{0}}甚至{0,0,0,0,0,0,0,0,0,0,0,0}在这种情况下可能更清楚。。。。并且它{0}}防止编译器在被告知使用-Wall时发出警告。