就像我小时候第一次学骑自行车的时候,感觉很难。(2)级别越高,车价越高。“为什么要买?”(3)为什么说要么不换,要么直接上四五十万的豪华品牌车?一辆车卖得好不好,最核心的因素是它的现有价值。通俗地说,就是我想买你的原因。但是随着奔驰、宝马在国内市场的崛起,以及奥迪的不懈努力,皇冠本身确实没有什么进步。再加上丰田和BBA品牌的差距,逐渐变得孤独,连自己的定位都找不到,就是解决不了“为什么买你”和“买你能解决什么问题”

为什么要用C语言中的结构体?我感觉它有些难,不用的话有什么后果?

C语言的结构体是非常重要的语法,毕竟当初祖师爷发明C语言的其中一个首要任务就是要能提供数据的结构化。题主觉得结构体难,估计是因为初学C语言的缘故,还记得刚开始接触C语言的时候,为了描述一个平行四边形的边长和对角线长,我定义了四个变量:短边长a,长边长b,对角线1长d1,对角线2长d2。在写代码的过程中,发现又要定义一个平行四边形,于是我不得不又定义了四个变量:a2,b2,d12,d22,结果变量又多又乱,写代码很不舒服,太容易弄混了,

当时我还想,幸好没有第三个,第四个平行四边形。后来,我发现原来C语言原来还有结构体这种语法,不禁感叹当初我那种做法实在是太笨了,C语言中的结构体(复合数据类型)C语言初学者最先接触到的数据类型大多都只具有单一的值,例如整数,字符,真假值,小数,在C语言中(或者说编程语言中)这些数据类型通常被称作基本数据类型。

事实上,C语言中还有复合数据类型,那什么是复合数据类型呢?实际上,你可能已经用过复合数据类型了:由许多字符组成的字符串,就是典型的符合数据类型,复合数据类型,其实就是由基本类型组成的数据类型。本节打算介绍的结构体也是一种复合数据类型,我们不讨论结构体的定义,直接看实例:用C语言制定一个描述平行四边形边长和对角线长的结构体数据类型,

这个需求是容易实现的,我们用double类型来描述“长度”,那么结构体可以如下定义:要注意的是,结构体定义完后,大括号后面要用“;”结束。parallelogram并不表示一个变量,它表示一种复合数据类型,structparallelogram{doublea,b,d1,d2;}整体可以看做一个就像int,double一样的数据类型,

怎么使用它呢?请看下面的C语言代码实例:这样我们就定义好了p1和p2两个结构体变量。事实上,定义好结构体数据类型之后,可以只使用structparallelogram来定义变量,请看:这样定义的p3和p4与上面那种方式定义的p1和p2是一样的,如果采用上面那种定义方式,parallelogram也可以不写:但是这样就没有办法再引用这个结构体类型了,因为它没有名字。

定义好变量后,就可以用“.”运算符来访问结构体的各个成员了,例如:很明显,用结构体来描述平行四边形的边长问题,比定义多个double变量方便多了。只需要用structparallelogram定义一个变量,这个变量自己内部就有平行四边形的短边长,长边长,对角线1长和对角线2长了,而且不会弄混,p1和p2的成员彼此是隔离的,使用“p1.”访问的变量肯定是p1的。

这样,无论定义多少个平行四边形,我们都不怕。当我们使用基本数据类型初始化C语言结构时,初始化起来非常方便。直接赋值就够了。如何初始化结构?请看下面的C语言代码:这些方法都有可能,但如果用第一种方法定义,p1必须是局部变量。如果p1是一个全局变量,它只能由一个常量表达式定义。此外,需要注意的是,变量一旦定义,就不能通过以下方式直接赋值,但可以在相同类型之间赋值:我们用一个完整的例子来结束这一节。请看下面的C语言代码:编译执行,得到如下结果:注意上面定义的变量A和结构中的A不冲突,因为结构中的A是由“.”访问的接线员。


文章TAG:c 为什么难  感觉  
下一篇