[英]Initialize typedef of int arrray within definition?
為第一年編程“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數組。
在定義中初始化int arrray的typedef?
...
給出一個適合代表10名學生的作業標記的類型定義,並將所有標記初始化為零。
標題和問題是毫無意義的,或者至少是不完整的,因為它沒有提到初始化什么 。 根據定義無法初始化類型。 只能實例化“實例化”類型。 因此,要么這種分配是不可靠的,要么就是需要假定所定義類型的隱式實例化。
但是,在后者中,在C中需要兩個步驟來實現這一點。
定義類型:
typedef int[10] Marks;
使用1.中定義的類型定義變量並初始化它:
Marks marks = {0};
給出一個適合代表10名學生的作業標記的類型定義, 並將所有標記初始化 (??)為零。
“初始化”這個詞沒有意義。 我假設他們要求你“初始化”。
給出一個適合代表10名學生的作業標記的類型定義, 並將所有標記初始化為零。
所以他們要求你做兩件事,“給出一個類型定義”和“初始化所有標記”,最好是在一行代碼中(?)。
什么是類型定義? 它是否具有typedef
? 我猜不會! 我將其理解為“定義類型的東西”。 例如:
struct Marks {int marks[10];};
是的,這個東西定義了一個丑陋的名稱struct Marks
的類型。 由於其中沒有typedef
,因此您實際上可以在同一行代碼中定義該類型的變量並初始化該變量:
struct Marks {int marks[10];} stuff = {{0}};
C ++中很少有地方數據類型定義包含任何“值”數據。 我只能想到幾個:
否則,數據和數據類型始終是分開的。 您無法在定義中指定類型的初始值。
你的問題讓人感到困惑:你說
typedef int foobar[10]; //is accepted but is not initialised
理解這只是一個數據類型定義; 還沒有什么可以初始化。
foobar x = {0};// this should compile and work fine.
但是在實例化類型時完成初始化,而不是在類型定義中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.