当前位置: 首页 > 知识库问答 >
问题:

c - C 语言在循环语句里面申明一个结构体变量,每次循环新申明的结构体变量地址都是相同的,为什么呀?

敖淮晨
2024-05-21

C 语言在循环语句里面申明一个结构体变量,每次循环新申明的结构体变量地址都是相同的,为什么呢?

难道必须使用malloc来创建节点吗?

下面是我的程序和打印的结果
image.png

共有1个答案

董飞航
2024-05-21
  • for(..){...}块作用域
  • Node node在每次循环完成时候空间都释放掉了。
  • 如果是Node * node = ..malloc这里的node指针在每次循环完成的时候也会释放掉,但是通过malloc分配的空间不会。只能通过free来手动释放或者当整个程序结束的时候自动释放。
 类似资料:
  • 计算机和人类发明的算盘一样,是一种计算工具。而计算机的发明就是要将人类从简单重复劳动中解放出来,所以计算机特别善于进行简单而需要大量人力才能完成的工作。 循环的做一件事情就是这样一种简单而需要耗费大量精力才能完成的一件事情。而且人工在处理这个事情的时候,还会经常出现各种错误。 循环作为计算机程序设计语言中基本的流控制语言,包含在几乎所有的程序中。比如我们常见的累加,计数,等等都是可以通过循环来完成

  • 主要内容:结构体变量,成员的获取和赋值前面的教程中我们讲解了 数组(Array),它是一组具有相同类型的数据的集合。但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄为整数,所在的学习小组为字符,成绩为小数,因为数据类型不同,显然不能用一个数组来存放。 在C语言中,可以使用 结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{    

  • 主要内容:for 中的初始语句——开始循环时执行的语句,for 中的条件表达式——控制是否循环的开关,for 中的结束语句——每次循环结束时执行的语句与多数语言不同的是,Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和 C++ 中非常接近: 可以看到比较大的一个不同在于 for 后面的条件表达式不需要用圆括号 括起来,Go语言还进一步考虑到无限循环的场景,让开发者不用写无聊的  和 ,而直接简化为如下的写法:

  • 我如何通过for循环的每次迭代声明一个新变量? 例如: 循环完成后,我想要4个变量,分别名为、、和,每个变量分别设置为、、和(当我在上面的代码中将设置为时,我实际上是将其设置为,因为这是在整个特定迭代中的值

  • 主要内容:获取结构体成员,结构体指针作为函数参数当一个 指针变量指向结构体时,我们就称它为 结构体指针。 C语言结构体指针的定义形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例: 也可以在定义结构体的同时定义结构体指针: 注意,结构体变量名和数组名不同,数组名在表达式中会被转换为数组指针,而结构体变量名不会,无论在任何表达式中它表示的都是整个集合本身,要想取得结构体变量的地址,必须在前面加 ,所以给 pstu 赋

  • 所谓 结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中, C语言结构体数组常被用来表示一个拥有相同 数据结构的群体,比如一个班的学生、一个车间的职工等。 在C语言中,定义结构体数组和定义结构体变量的方式类似,请看下面的例子: 表示一个班级有5个学生。 结构体数组在定义的同时也可以初始化,例如: 当对数组中全部元素赋值时,也可不给出数组长度,例如: 结构体数组的使用也很简单,例如,获取