1. 程式人生 > >C ++ Primer Plus 第六版 程式設計練習答案4.13.9,錯解與正解,順便求解答!

C ++ Primer Plus 第六版 程式設計練習答案4.13.9,錯解與正解,順便求解答!

6. 結構CandyBar包含3個成員,如變成練習5所示。 請編寫一個程式,建立一個包含3個元素的CandyBar陣列, 並將它們初始化為所選擇的值,然後顯示每個結構的內容。

9.完成程式設計練習6,但使用new來動態分配陣列,而不是宣告一個包含3個元素的CandyBar陣列。

error:

#include<iostream>
#include<string>
using namespace std;
struct candybar
{
	string brand;
	double weight;
	int content;
};

void main()
{
	
	candybar* snack=new candybar[3];
    snack[0] = { "Mocha Munch", 2.3, 350 };
    snack[1] = { "Avalon_Y", 2.3, 350 };
    snack[2] = { "Arthur Yong", 2.3, 350 };
	
	for(int i=0;i<3;i++)
	{	cout<<snack[i].brand<<endl<<snack[i].content<<endl<<snack[i].weight<<endl;}

}

用new分配的動態結構陣列不能這麼初始化,否則會

C:\Program Files\Microsoft Visual Studio\MyProjects\zxc\rrr.cpp(15) : error C2059: syntax error : '{'
C:\Program Files\Microsoft Visual Studio\MyProjects\zxc\rrr.cpp(15) : error C2143: syntax error : missing ';' before '{'
C:\Program Files\Microsoft Visual Studio\MyProjects\zxc\rrr.cpp(15) : error C2143: syntax error : missing ';' before '}'
C:\Program Files\Microsoft Visual Studio\MyProjects\zxc\rrr.cpp(16) : error C2059: syntax error : '{'
C:\Program Files\Microsoft Visual Studio\MyProjects\zxc\rrr.cpp(16) : error C2143: syntax error : missing ';' before '{'
C:\Program Files\Microsoft Visual Studio\MyProjects\zxc\rrr.cpp(16) : error C2143: syntax error : missing ';' before '}'
C:\Program Files\Microsoft Visual Studio\MyProjects\zxc\rrr.cpp(17) : error C2059: syntax error : '{'
C:\Program Files\Microsoft Visual Studio\MyProjects\zxc\rrr.cpp(17) : error C2143: syntax error : missing ';' before '{'
C:\Program Files\Microsoft Visual Studio\MyProjects\zxc\rrr.cpp(17) : error C2143: syntax error : missing ';' before '}'
執行 cl.exe 時出錯.



corret

#include<iostream>
#include<string>
using namespace std;
struct candybar
{
	string brand;
	double weight;
	int content;
};

void main()
{
	
	candybar* snack=new candybar[2];
	snack[0].brand="awd";
	snack[0].content=2.2;
	snack[0].weight=200;
	snack[1].brand="sd";
	snack[1].content=5.2;
	snack[1].weight=531;	
		
		
	for(int i=0;i<2;i++)
		{	cout<<snack[i].brand<<endl<<snack[i].content<<endl<<snack[i].weight<<endl;}
		
}

這樣的賦值才是正確的!

為何會這樣我也不懂,如果有高人,求解答!