加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

结构体

发布时间:2020-12-16 09:09:09 所属栏目:百科 来源:网络整理
导读:原文链接:http://www.orlion.ga/758/ struct?point?{????double?x,?y;}; ????这样定义了point这个标识符,既然是标识符,那么它的命名规则就和变量一样,但是不表示一个变量而是表示一个类型,这种标识符在C语言中成为Tag,整个struct point {double x,y;}

原文链接:http://www.orlion.ga/758/

struct?point?{
????double?x,?y;
};

????这样定义了point这个标识符,既然是标识符,那么它的命名规则就和变量一样,但是不表示一个变量而是表示一个类型,这种标识符在C语言中成为Tag,整个struct point {double x,y;} 可以看做是一个类型名,就像int或者是double一样,只不过这是个复合类型,如果用这个类型名来定义变量,可以写:

struct?point?{
????double?x?,?y;
}?p1?,?p2;

????这样p1和p2就是变量名,变量定义后边要加上“;”,另外结构体定义(如第一段代码)后边";"不能省略。

????不管用那种方式来定义point这个Tag,以后都可以直接使用struct point来替代类型名了,例如可以这样再重新定义两个变量:

struct?point?p3?,?p4;

????如果在定义结构体类型的时候同时定义了变量,也可以不必写Tag,例如:

struct?{
????double?x?,?p2;

????结构体变量可以用"."运算符来访问其中的成员:

#include?<stdio.h>

int?main(void)
{
????struct?point{
????????double?x?,?y;
????}?p;
????double?x?=?1.0;
????p.x?=?x;
????z.y?=?2.0;
????
????struct?point?p2;
????
????printf("z的横坐标是:%f,纵坐标是%fn"?,?z.x?,?z.y);
????
????return?0;
}

? ? 结构体也可以在定义时初始化,如:

struct?point?p?=?{1.0?,?2.0};

????如果括号中的数据比结构体的成员少,未指定的成员用0来初始化,就像未初始化的全局变量一样。结构体赋值与基本数据类型有些不同,需要注意一下是错误的:

struct?point?p;
p?=?{1.0?,?2.0};

????但是struct point p1 = {1.0,2.0}; struct point p2 = p1;p1 = p2;这样可以。

????

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读