C言語の構造-----

構造:同じ名前の変数が、コレクションを指し一緒関連情報の手段を提供します。

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 "、{ 1009899 } 99 }、STU2 = { " luzhu "、{ 100100100 }、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 "、{ 999896 } 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 ;
 } 

 

おすすめ

転載: www.cnblogs.com/changfan/p/11665169.html