码迷,mamicode.com
首页 > 其他好文 > 详细

结构体+typedef的具体应用和解释

时间:2015-05-18 23:07:49      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:typedef   struct   

首先需要先了解结构体的基本知识:
1.结构体定义:
struct 结构体名

……结构体成员;

举例:

struct student
{
    char name[10];
    int age;
}

2.结构指针-struct *p
其中,p为指向结构的一个指针,在给p传地址时,要给他传入结构体类型的地址。
举例:

struct student *p;
struct student stu1={“Anna”,20};
p = &stu1;

依据上例可以发现,一个结构的名字并不是该结构的地址,必须使用&运算符,但是如果本身就是定义了一个结构指针,就像下面的例子一样。

struct student *p1;
struct student *p2;
p1 = p2;

总结struct两点用法,测试用例可以参照下面完整代码:

#include<stdio.h>

struct student 
{
    char name[20];
    int age;
};
void main()
{
    struct student stu1 = {"Anna",25};
    printf("%s %d", stu1.name, stu1.age);
    printf("\n");

    struct student *p;
    p = &stu1;
    printf("%s %d", p->name, p->age);
    printf("\n");

    struct student *stu2;
    stu2 = p;
    printf("%s %d", stu2->name, stu2->age);
    printf("\n");
}

输出:
技术分享

其次,在用结构体时,不得不提到typedef 的用处,其作用类似于起别名,基本语法typedef 类型 类型别名
举例:

typedef int my_type1;
typedef char my_type2;
typedef char *my_ptr1;
typedef int *my_ptr2;

如上例,重点解释带有指针的定义,my_ptr1是指向字符类型的一个指针, 具体应用如下:

char *p1;
my_ptr1 p2;
p2 = p1;

重点记住,my_ptr1是一个指针,故p2是一个字符指针。
同理,结构指针的定义,类似于下例:

typedef struct student *stu;
stu p;

这里p就是一个结构指针,记住,是指针,能够指向结构体的一个指针。实际上也可以理解为typedef在这里的作用就是给struct student *起了个别名stu,这个就是神奇之处,stu竟然可以代表一个指针类型。为了加深理解,在第一个测试用例基础上,稍作改动加入typedef,如下:

#include<stdio.h>

struct student 
{
    char name[20];
    int age;
};
typedef struct student my_stu;
typedef struct student *my_stu_ptr;
//也可以typedef struct student my_stu, *my_stu_ptr;
void main()
{
    //测试my_stu
    struct student stu1 = {"Anna",25};
    my_stu stu2 = {"Tom",27};
    printf("%s %d\n%s %d \n", stu1.name, stu1.age, stu2.name, stu2.age);
    printf("---------------\n");
    //测试my_stu_ptr
    struct student *p1;
    my_stu_ptr p2;
    my_stu_ptr p3;
    p1 = &stu1;
    p2 = p1;
    p3 = &stu1;
    printf("%s %d\n%s %d\n%s %d\n", p1->name, p1->age, p2->name, p2->age, p3->name, p3->age);
    printf("---------------\n");

}

输出:
技术分享

结构体+typedef的具体应用和解释

标签:typedef   struct   

原文地址:http://blog.csdn.net/xinyu913/article/details/45826213

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!