结构体指针(学习笔记)

结构体指针即结构体的地址,结构体变量存放内存中,也拥有起始地址。

定义一个变量来存放这个地址,这个变量就是结构体指针变量。

1、结构体指针变量的定义方法:

        struct  结构体类型名   * 结构体指针变量名;

      例1:

#include <stdio.h>

   struct student 
  {

    int num;            //学号
    char name[20];      //姓名
    char sex;           //性别
    int age;            //年龄
        
};                      

   int main()
  {

   struct student *p;   //struct student(结构体类型名)   p(结构体指针变量名)
    
   struct  student boy;

    p = &boy;

   return 0;
}




 2、结构体指针变量对成员的引用

       1、*结构体指针变量名)成员

       2、   结构体指针变量名   -> 成员                (常用)

3、访问结构体里面的成员三种方法

            boy.num = 20;          // 通过结构体变量名.成员名 访问

            (*p).num= 20;           //  *p等效于p指向的变量boy

             p -> num=20;          //   指针  ->  成员名

例二,*结构体指针变量名)成员  

#include <stdio.h>             
#include<string.h>                //strcpy函数的头文件
struct student
{
    int num;
    char name[20];
    char sex;
    int age;
    
    
};

int main() 
{

 //定义了一个struct student *类型的指针变量,变量名为p,用来保存结构体变量的地址编号
   struct student *p;  
                         
   struct student boy;

   p=&boy;
 
   boy.num=2022;
   strcpy(boy.name,"坏坏");     
   boy.sex='B';                        
   boy.age=20;
   printf("***学生信息****\n");
   printf(" num=%d\n name=%s\n sex=%c\n age=%d\n ",boy.num,boy.name,boy.sex,boy.age);

   return 0;
}

运行结果 

***学生信息****
 num=2022
 name=坏坏
 sex=B
 age=20
 

例三,结构体指针变量名   -> 成员

#include <stdio.h>
#include<stdlib.h>                //malloc函数的头文件
#include<string.h>                //strcpy函数的头文件
struct student
{
    int num;
    char name[20];
    char sex;
    int age;
};

int main() 
{

    //定义了一个struct student *类型的指针变量
   struct student *p;   
   
   //在堆区开辟结构体空间并将其地址保存在结构体指针变量中
   p=(struct student *)malloc(sizeof(struct student));
  
   p->num=2022;
   strcpy(p->name,"坏坏");     
   p->sex='B';                        
   p->age=20;
   printf("***学生信息****\n");
   printf(" num=%d\n name=%s\n sex=%c\n age=%d\n ",p->num,p->name,p->sex,p->age);

   return 0;
}

运行结果

***学生信息****
 num=2022
 name=坏坏
 sex=B
 age=20
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值