现在的位置: 首页 > 综合 > 正文

C语言:结构体

2013年04月10日 ⁄ 综合 ⁄ 共 2471字 ⁄ 字号 评论关闭

 

Struct 变量命名

struct 

{

    int year;

    int month;

} DATE;

 

struct DATE1{

int year;

int month;

};

 

结构体的名字写在前面和后面都是OK



一个基本的结构体的例子

 

#include "stdio.h"

 

struct Date{

    int day;

    int month;

    int year;

};

 

struct Stu 

{

    int stuNo;

    char stuname[20];

    int age;

    struct Date birthday;

   

} stu;

 

void main(){

 

stu.age=11;

printf("%d\n",stu.age );

 

scanf("%d", &stu.age );

printf("%d\n",stu.age );

 

stu.birthday.year=1999;

stu.birthday.month=1;

stu.birthday.day=22;

printf("birthday is %d-%d-%d", stu.birthday.year,stu.birthday.month,stu.birthday.day);

 

}

 

如果处理结构体中表示字符串的char[]数组呢?

 

方式1

#include "stdio.h"

#include "string.h"                                                 

 

struct Stu{

    int stuNo;

    char stuName[20];// 定义一个数组的时候 若没有对其初始化,那么必须要指定数组长度

    int age;

    char addr[20];

 

} stu1,stu2;

 

 

void main(){

    stu1.stuNo=1;

    gets(stu1.stuName );//C语言中的数组模拟的字符串似乎不能在定义之后再赋值 所以就通过这样的方式赋值

    stu1.age=12;

    gets(stu1.addr);

 

    printf("stu1  info is %d, %s ", stu1.stuNo, stu1.stuName);

    printf(" %d, %s\n",stu1.age, stu1.addr );

   

}

 

或者使用下面这种更为简单的方式

 

#include "stdio.h"

#include "string.h"

 

struct Stu{

    int stuNo;

    char stuName[20];// 定义一个数组的时候 若没有对其初始化,那么必须要指定数组长度

    int age;

    char addr[20];

 

} stu1={1,"stu1",23,"address" },

stu2={2,"stu2",23,"adsssdress" };

 

 

void main(){

    stu1.stuNo=1;

   

    printf("stu1  info is %d, %s ", stu1.stuNo, stu1.stuName);

    printf(" %d, %s\n",stu1.age, stu1.addr );

 

}

 

结构体型数组

 

#include "stdio.h"

#include "string.h"

 

struct Stu{

    int stuNo;

    char stuName[20];// 定义一个数组的时候 若没有对其初始化,那么必须要指定数组长度

    int age;

    char addr[20];

};

 

struct Stu stus[]={

    {1,"stu1",23,"add"},

    {2,"stu2",21,"add2"},

    {3,"stu3",21,"add3"}

};

 

 

void main(){

    struct Stu stu1=stus[0];

   

    printf("stu1  info is %d, %s ", stu1.stuNo, stu1.stuName);

    printf(" %d, %s\n",stu1.age, stu1.addr );

 

}

 

指向结构体数据类型的指针

 

#include "stdio.h"

#include "string.h"

 

struct Stu{

    int stuNo;

    char stuName[20];//定义一个数组的时候 若没有对其初始化,那么必须要指定数组长度

    int age;

    char addr[20];

} stu1;

 

 

void main(){

    stu1.stuNo=1;

    strcpy(stu1.stuName,"stu1" );

    stu1.age=23;

    strcpy(stu1.addr,"address" );

 

    struct Stu *p;

    p=&stu1;

 

    (*p).age=20;

    p->age=21;

    strcpy(p->stuName, "stu1111" );

   

    //访问某一个结构体实例中的某一个变量 3中方式

    //1 结构体实例名.成员名

    //2 (*p).成员名

    //3 p->成员名 //VC 在一个指针变量后面打.的话 可以直接弹出->

   

    printf("stu1  info is %d, %s ", stu1.stuNo, stu1.stuName);

    printf(" %d, %s\n",stu1.age, stu1.addr );

 

}

 

指向结构体指针运用1

 

#include "stdio.h"

#include "string.h"

 

struct Stu{

    int stuNo;

    char stuName[20];//定义一个数组的时候 若没有对其初始化,那么必须要指定数组长度

    int age;

    char addr[20];

};

 

struct Stu stus[]={

    {1,"stu1",23,"add"},

抱歉!评论已关闭.