Saligi丶 2022-10-20 19:49 采纳率: 0%
浏览 8

C语言结构体的指针类型的加不加*的调用?

数据结构C语言实现中

/// 
/// 存放中转链式栈
/// 
typedef struct operand
{
    char x;
    struct operand* next;
}LStackOperand,*LinkStack;  

第一种:void InitStack(LinkStack* top)
第二种:int StackEmpty(LinkStack top) 

用typedef给结构体设计了两个类名,LinkStack为指针类名。为什么再定义变量时能够定义两种类的变量,一种LinkStack top,另一种LinkStack top(没有*)。这两种有什么区别吗?

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-10-20 20:41
    关注

    当然有区别了,在InitStack(LinkStack * top)函数中,可以在函数内修改 top指向的指针地址,比如
    LinkStack top;
    InitStack(&top);
    而InitStack函数内有 ( * top) = (LinkStack) malloc(sizeof(LStackOperand));
    如果参数是LinkStack top的话,写成 InitStack(top)是无法实现top指针地址的修改的

    评论

报告相同问题?

问题事件

  • 创建了问题 10月20日

悬赏问题

  • ¥15 有人能看一下我宿舍管理系统的报修功能该怎么改啊?链表那里总是越界
  • ¥15 cs loadimage运行不了,easyx也下了,没有用
  • ¥15 r包runway详细安装教程
  • ¥15 Html中读取Json文件中数据并制作表格
  • ¥15 谁有RH342练习环境
  • ¥15 STM32F407 DMA中断问题
  • ¥15 uniapp连接阿里云无法发布消息和订阅
  • ¥25 麦当劳点餐系统代码纠错
  • ¥15 轮班监督委员会问题。
  • ¥20 关于变压器的具体案例分析