• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

C语言中结构体struct类型的用法(二)

结构体指针的用法
所谓的结构体指针就是指向结构体变量的指针,一个结构体变量的起始地址就是这个结构体变量的指针。如果把一个结构体变量的起始地址存在在一个指针变量中,那个这个指针变量就指向该结构体变量。
1.1 指向结构体变量的指针
指向结构体对象的指针变量既可指向结构体变量,也可指向结构体数组中的元素。指针变量的基类型必须与结构体变量的类型相同。
struct Student * pt;//pt可以指向struct Student类型的变量或数组元素

struct Student stu_1;
struct Student * p;
p=&stu_1;
stu_1.num=1001;
strcpy(stu_1.name, "LiLin");
printf("NO.:%d\n", (*p).num);

为了使用方便和直观,C语言允许把(*p).num用p->num来代替。
如果p指向一个结构体变量stu,以下3种用法等价:

1.stu.num
2.(*p).num
3.p->num

1.2 指向结构体数组的指针
struct Student * p;
for(p=stu;p<stu+3;p++)
printf("%5d %-20s %2c %4d\n", p->num,p->name, p->sex, p->age);
1.如果p的初值为stu,即指向stu的第一个元素,p加1后,p就指向下一个元素,例如:

(++p)->num //先使p+1
(p++)->num //先求得p->num,然后p+1

2.程序定义了p是一个指向struct Student类型对象的指针变量,它用来指向一个struct Student类型的对象,不应用来指向stu数组元素中的某一个成员,例如,下面的用法是不对的;
p=stu[1].name;
如果要将某一成员的地址赋给p,可以使用强制类型转换,先将成员的地址转换成p的类型,例如:

p=(struct Student *)stu[0].name;

posted on 2022-11-20 16:22  SOC验证工程师  阅读(240)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3