詳細なC ++構造(1)

最近、ネチズンからプライベートメッセージが届き、構造の基本構造を説明する構造についてのブログ投稿をお願いしましたが、構造自体はポインタや配列に関係している可能性があるため、ブロガーは3段階の構造を公開する準備をしています。本文のブログ投稿では、構造の説明を別途説明しています。
それ以上の苦労なしに、構造について学び始めましょう。前提条件:新しい知識を学ぶときは、最初に概念を理解します。概念を正しく十分に理解している場合にのみ、対応するツール(キーワード)を正しく使用できます。

1.構造の定義

構造は、実際にはメンバーリストが複数のメンバーで構成されている構造であり、各メンバーは構造のコンポーネントです。
構造の定義形式: 構造構造名{プロパティ名;};

理解:テンプレートとして理解できますが、同時に、intタイプ、shortタイプ、charタイプなど、使用するキーワードと同じように、カスタムタイプと見なすことができます。後で学習した(クラス)クラスは、実際には(構造)構造と構造が非常に似ています。

Structはキーワードであり、structの後の構造名は人為的に設定され、構造名はテンプレート、属性を持つテンプレートと見なすことができます。

例:動物のテンプレートを作成したい場合、この動物の属性は名前、体重、年齢です。
したがって、このアイデアの分析は次のようになります。①動物のテンプレートを作成し、②このテンプレートに属性を追加します。
コードは次のように実装されます。

//创建动物结构体
struct Animal	
{
    
    
//属性名
	char name[10];		//名字
	int weight;			//体重
	int age;			//年龄
};

明らかに、この方法で作成した動物の構造は、構造の定義形式に準拠しています。structstructure name {property name;};

二、構造の変数

構造の変数は何ですか?先に述べたように、構造を作成するには、structを使用して作成します。形式は次のとおりです。structstructurename {property name;};
ただし、この構造を作成した後、テンプレートである構造を使用できます。 、上記の動物ですが、動物はint、short、charに似たキーワードとして理解できます。Animalを使用して変数を定義でき、Animalによって定義された変数にもメモリがあります。
ただし、ここで言う必要があるのは、Animalはテンプレートであり、このテンプレートには独自の属性があるということです。このような属性を持つテンプレートを使用してオブジェクトを作成すると、作成されたオブジェクトにも同じ属性が含まれます。

まず、構造内にオブジェクトを作成するいくつかの方法を見てみましょう。
2構造を作成するときにオブジェクトを作成する

形式:
構造構造名
{属性名;}変数名1、変数名2;

//创建动物结构体的同时创建结构体变量
struct Animal	
{
    
    
//属性名
	char name[10];		//名字
	int weight;			//体重
	int age;			//年龄
}Cat,Dog;//用Animal这个结构体创建了Cat,Dog这两个结构变量,这两个变量都拥有名字,体重,年龄这几个属性。
構造を作成した後、2つ(2つ)がオブジェクトを作成します

形式:構造名構造変数名;

#include<iostream>
using namespace std;

//第一步,创建动物结构体
struct Animal	
{
    
    
//属性名
	char name[10];		//名字
	int weight;			//体重
	int age;			//年龄
};

int main()
{
    
    
//第二步,创建完结构体后再用结构名去创建变量
	Animal Cat;	//用Animal这个结构体创建了Cat变量,Cat拥有Animal的所有属性
	Animal Dog;	//用Animal这个结构体创建了Dog变量,Dog拥有Animal的所有属性

	return 0;
}
2(3)構造変数を定義する方法を理解した後、変数を使用して変数のプロパティを呼び出す方法を見てみましょう。

形式:変数名。属性名
この形式を使用すると、それに応じて変数の属性を初期化できます。
ここに写真の説明を挿入

2つの初期化に関しては、構造変数を初期化する方法が2つあります。①直接初期化(初期化は構造変数の定義時に実行され、メンバーの初期化の順序は構造属性宣言の順序です)②間接初期化。

直接初期化は次と同じ
です。構造自体の属性宣言の順序は次のとおりです。name[10]; weight; age
ここに写真の説明を挿入
次に、直接初期化される場合、割り当ての順序は名前、重み、および年齢です。割り当てが実行され、出力検証が成功します。変数のプロパティが初期化されます。次の
ようなコード:

#include<iostream>
using namespace std;

//创建动物结构体
struct Animal	
{
    
    
//属性名
	char name[10];		//名字
	int weight;			//体重
	int age;			//年龄
};

int main()
{
    
    
	Animal Cat = {
    
    "猫",10,1};	//在创建结构变量的时候进行初始化,初始化顺序为结构体属性的声明顺序
	Animal Dog = {
    
    "狗",20,2};	//直接初始化,分别为名字,体重,年龄
	cout <<"动物名字为:"<< Cat.name << endl;
	cout << "动物体重为:" << Cat.weight << endl;
	cout << "动物年龄为:" << Cat.age << endl;

	cout << "动物名字为:" << Dog.name << endl;
	cout << "动物体重为:" << Dog.weight << endl;
	cout << "动物年龄为:" << Dog.age << endl;
	return 0;
}

操作結果:
ここに写真の説明を挿入
間接初期化は、変数の定義時に初期化するのではなく、構造変数を介して属性を呼び出して属性を割り当てることです。

#include<iostream>
using namespace std;

//创建动物结构体
struct Animal	
{
    
    
//属性名
	char name[10];		//名字
	int weight;			//体重
	int age;			//年龄
};

int main()
{
    
    
	Animal Cat = {
    
    "猫"};	//当然,我们可以只对变量的属性部分初始化,赋值的顺序仍然是结构属性声明的顺序。所以猫赋值给了字符数组name[10]
	Animal Dog = {
    
    "狗"};	//同理



	//对结构变量的属性进行调用,并且对属性进行初始化---间接初始化
	Cat.age = 2;
	cout <<Cat.name<< "的年龄为:" << Cat.age << "岁" << endl;
	Dog.weight = 30;
	cout <<Dog.name<< "的体重为:" << Dog.weight << "千克" << endl;
	return 0;
}

動作結果:
ここに写真の説明を挿入

3、構造メンバー

1つまたは2つのセクションを通じて、構造を作成する方法、構造を使用して変数を作成する方法、および変数を使用して独自の関連プロパティを呼び出す方法を学習しました。ここでは、構造メンバーの概念を紹介します。
構造メンバー:構造メンバーには、メンバープロパティとメンバー関数(メンバーメソッドまたは構造メソッドとも呼ばれます)が含まれます。
メンバープロパティ:メンバープロパティは、前述のとおり、構造自体のプロパティです。構造が変数を定義した後、変数にもこの構造の属性があります。これにより、属性の割り当てや出力などの操作を行うことができます。
メンバー関数:メンバー関数は、実際には構造の関数、このテンプレートが実行できる関数の種類、またはこのテンプレートによって作成されたオブジェクトが実行できることと、それが実行する関数です。これがメンバー関数です。

上記のように、例として動物を取り上げましょう。ご存知のように、ほとんどの動物は食べたりジャンプしたりできるので、食べることを構造関数として使用できるので、対応する構造を次のように書くことが考えられます。機能。したがって、構造によって作成された変数も構造の関数を持つことができるため、構造変数は対応するメンバー関数を呼び出すことができます。

==形式:構造変数。関数名(正式なパラメーターリスト)==
例:ここに写真の説明を挿入
コードは次のとおりです。

#include<iostream>
using namespace std;

//创建动物结构体
struct Animal	
{
    
    
//成员属性:
	char name[10];		//名字
	int weight;			//体重
	int age;			//年龄
//成员方法:
	void Eat()
	{
    
    
		cout<<name << "吃东西了" << endl;
	}
	void Jump()
	{
    
    
		cout <<name<< "跳跃了" << endl;
	}


};

int main()
{
    
    
	Animal Cat = {
    
    "猫"};	//当然,我们可以只对变量的属性部分初始化,赋值的顺序仍然是结构属性声明的顺序。所以猫赋值给了字符数组name[10]
	Animal Dog = {
    
    "狗"};	//同理



	//对结构变量的属性进行调用,并且对属性进行初始化---间接初始化
	Cat.age = 2;
	cout <<Cat.name<< "的年龄为:" << Cat.age << "岁" << endl;
	Dog.weight = 30;
	cout <<Dog.name<< "的体重为:" << Dog.weight << "千克" << endl;

	//对结构体变量的函数进行调用,简称为:结构体变量执行了某功能。(或者调用了某函数)
	Cat.Eat();		//猫调用了吃东西函数(或者猫调用了吃东西方法)
	Cat.Jump();		//猫调用了跳跃函数(或者猫调用了跳跃方法)

	Dog.Eat();		//狗调用了吃东西函数(或者狗调用了吃东西方法)
	Dog.Jump();		//狗调用了跳跃函数(或者狗用了跳跃方法)

	return 0;
}

運用結果:
ここに写真の説明を挿入
C ++の習得については、フォロー、ブックマーク、迷子にならないようにフォローしてください。ネチズンも私とC ++乾物について話し合うことを歓迎します。C ++の知識はそれだけではありません。1つずつ分析して説明します。ネチズンが私に説明してほしいと思ったら、コメントしてメッセージを残すことができます。私はそれをみんなに説明するために最善を尽くします。

:: ProMer_Wang

リンク:https://blog.csdn.net/qq_43801020/article/details/107182468

この記事はProMer_Wangのオリジナル記事であり、著作権は作者に帰属します。再印刷するための元のテキストのソースを示してください。再印刷へようこそ!

おすすめ

転載: blog.csdn.net/qq_43801020/article/details/107182468