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

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 QTableWidget重绘程序崩溃
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
  • ¥15 麒麟V10桌面版SP1如何配置bonding