疯疯熊 2023-02-05 10:51 采纳率: 92.5%
浏览 79
已结题

typedef struct结构体后面两个别名搞不清楚了


typedef struct A{

...

}* B,BB;

1.int create (B b)
{
}
和
2.int create(B* b){
*b=NULL;
…
}
和
3. int create (BB b)
{
}
4. int create (BB *b)
{
}
是什么区别呀
我感觉14就是b就是一个指针,我以前也是这么理解的,尤其是这个2现在注意到了这种写法,不知道是不是就是指**B就是BB?就是b其实是指针指向的内容?3是不是和2的意思是一样的呀?
还有2里如果写一句*b=NULL,这里指的是指针空还是内容空呀

“1.首先定义一个结构体,给它取别名:
typedef struct node{
struct node * next;//指向下一节点
int data;//数据域
}pnode,*linklist;;//别名与指针名
2.定义结构体指针与指针变量,给出几种不同的定义方式
struct node *a,b;
pnode *c,d;
linklist  p;
他们别名的关系如下:
linklist=struct node =pnode
pnode=struct node;
这里的a即指向结构体node的指针,b为结构体变量。两者之间关系为:
a=&b;
其他定义方式之间关系为(这里指的是类别之间关系):
c=&d;  c=&b
d=b;
p=a;  p=c; p=&b;    p=&d
像这之中c和p也是指向结构体node的指针”这个是我查到的用法

  • 写回答

3条回答 默认 最新

  • P2441M 2023-02-05 11:17
    关注

    呃……解引用这种做法也就Python有,C/C++是没有的。
    上面的代码里,就是指B相当于A*类型,而Bi等价于A类型。
    而对于大部分的链表来说,总是会有typedef struct Node {...} *LinkNode,这个时候LinkNode也是指针,但是一般是作为一个数组。
    对于2中的*b = NULL,这个会将B* b设置为空,使其使其指向空值,也就是说这个时候,指针不指向任何值,自然也没有对应的内容。
    3和4中的BB指的是typedef里的Bi吗?如果是的话,那么2和3是不同的,因为B*等价于A**,而BB等价于A。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月13日
  • 已采纳回答 2月5日
  • 修改了问题 2月5日
  • 修改了问题 2月5日
  • 展开全部

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分