墨歆洹 2021-04-05 22:00 采纳率: 66.7%
浏览 31
已结题

如图 c语言简单问题 谢谢

typedef struct ListNode{
	int date;
	struct ListNode *next;
}ListNode;



int main(int argc, char *argv[])
{
	ListNode listNode;
	return 0;
}

上边这段代码 ,请问我main函数中ListNode listNode;这句代表这什么?开辟了一块定义好结构体的内存吗?

那这这段代码中l=(ListNode)malloc(sizeof(ListNode));这个又代表了什么?

 

 

  • 写回答

3条回答 默认 最新

  • 小白小白你好菜 2021-04-06 20:49
    关注

    ListNode listNode中你的数据类型为ListNode,这个类型是你自己通过基本数据类型复合而来,可以看做和int/float等类型相同。

    int a和ListNode a本质是一样的,都是定义了一个变量并且系统为他分配了内存,这个a和系统分配的地址已经绑定,无法改变。

    l=(ListNode)malloc(sizeof(ListNode))这句,我是觉得有些问题的,当然,不是说不能用,malloc左右两边的类型一致,表明你的l是ListNode l这样定义的,在你定义的时候系统已经分配内存了,再去申请内存似乎没有必要。

    用malloc函数的情况通常为 ListNode *l = (ListNode *)malloc(sizeof(ListNode))这样用的。因为光定义指针就只相当于你给一个指针起了个名字,这个指针指向的类型为ListNode。你申请内存,然后系统给了你一个地址,你的这个指针指向这个地址,以后,你的这个指针还可以指向其他的地址。上面那种定义是名字和地址绑定了,不可改变。

    malloc函数常用于指针类型的内存申请,系统分配内存,让指针指向这个内存所在的地址

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

报告相同问题?

问题事件

  • 系统已结题 7月31日
  • 已采纳回答 7月23日

悬赏问题

  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?