構造:同じ名前の変数が、コレクションを指し一緒関連情報の手段を提供します。
A:構造変数の初期化の定義
①定義:
(1)構造変数で定義された型の構造体の定義の後
構造体の学生 { チャー名[ 10 ]; //メンバアイテム のint [スコア。3 ]; フロートAVER。 };
構造体のsutdentのSTU1、構造体変数の型定義後の構造のSTU2 //定義
(2)構造型の定義はまた、構造体変数を定義します
構造体の学生 { チャー名[ 10 ]; // メンバアイテム のint [スコア。3 ]; フロートAVER。 } STU1、STU2。
直接構造体変数の(2)定義
構造体 { チャー名[ 10 ]; // メンバアイテム のint [スコア。3 ]; フロートAVER。 } STU1、STU2。
②初期化
構造体の学生 { チャー名[ 10 ]; // メンバアイテム のint [スコア。3 ]; フロートAVER。 }。 構造体 sutdent STU1 = { " changfan "、{ 100、98、99 } 99 }、STU2 = { " luzhu "、{ 100、100、100 }、100 }
構造体変数を使用します。2
①構造体メンバを使用します
書式#include <stdio.hに> する#include < 文字列の.h> // 宣言構造型 構造体学生{ チャー名[ 10 ]; int型 sorceの[ 3。]; フロートAVER。 }。 int型のmain() { 構造体の学生ST1; strcpyの(st1.name、" changfan " ); st1.sorce [ 0 ] = 98 。 st1.sorce [ 1 ] = 99 。 st1.sorce [ 2 ] = 96 。 st1.aver =(st1.sorce [ 0 ] + st1.sorce [ 1 ] + st1.sorce [ 2 ])/ 3.0 。 printf(" %sにする\ n " 、st1.name)。 printf(" %D%D%D \ n "、st1.sorce [ 0 ]、st1.sorce [ 1 ]、st1.sorce [ 2 ])。 printf(" %のF " 、st1.aver)。 リターン 0 ; }
パラメータとして②構造体変数
#includeに<stdio.h> 構造体学生{ チャー名[ 10 ]。 int型 sorce [ 3 ]。 フロートAVER。 }。 int型 printstu(構造体の学生ST1) { printf(" 名:%S; \ nsocre [0]:%のD、socre [2]:%dは、[1] socre%dを; \ネイバー:%のF " 、 st1.name、st1.sorce [ 0 ]、st1.sorce [ 1 ]、st1.sorce [ 2 ]、st1.aver)。 リターン 0 ; } int型のmain() { 構造体学生ST1 = { " changfan "、{ 99、98、96 } 96 }。 printstu(ST1)。 リターン 0 ; }
第三に、構造体のポインタと配列
構造体の配列①
する#include <stdio.hの> に#define N 5 構造体学生{ チャー名[ 10 ]。 int型 sorce [ 3 ]。 フロートAVER。 }。 int型のmain() { 構造体の学生STU [N]; int型I、J。 用(i = 0 ; iがN <、iは++ ){ printf(" %d個の学生の名前を入力してください:"、私は+ 1 ); // 文字の種類のデータ構造を読み込むにはアドレス文字(&)取られていない scanfの(" %のS " 、STU [I]を.nameの) のための(J = 0 ; J < 3。、J ++ ){ printf(" %d個の学生を入力してください%Dドア結果:"、私は+ 1、J +を。1 ); // データ整形のデータ構造を、読んで、フロートは数含まれている必要があります scanfの(" %dを"&STU [I] .sorce [J])。 } この[ザ] .aver =(この[] .sorce [ 1 ] +この[] .sorce [ 2 ] +この[] .sorce [ 0 ])/ 3.0 。 } 用(i = 0 ; iがN <、iは++ ){ printf(" %sの%F \ n " 、STU [I] .nameの、STU [I] .aver)。 } リターン 0 ; }
②構造体のポインタ
書式#include <stdio.hに> のstruct 学生 { 文字名[ 10 ]。 INTのスコア[ 3 ]。 フロートAVER。 }。 int型のmain() { 構造体の学生ST、* P; P =&ST; // 直接表示データは、方法読み取る scanfの(" %のS、%D、D%、D%、D%"、(* P).nameの、&が(* P).score [ 0 ]、&(* P) .score [ 1 ]、 &(* P).score [ 2 ]、&(* P).aver); // 演算子の具体的な構造内のポインタ- >出力 のprintf(" 名:%S \ NSCore [0] dscore%= [1] = dscore%[2]%D \ D%=ネイバー= " 、 pは - >名、P->スコア[ 0 ]、P>得点[ 1 ]、P>得点[ 2 ]、P> AVER)。 リターン 0 ; }