zoukankan      html  css  js  c++  java
  • 结构体

    原文链接: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 , y;
    } p1 , 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,纵坐标是%f
    " , 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;这样可以。

        

  • 相关阅读:
    USACO3.4.3Electric Fence
    (转)《算法艺术与信息学竞赛》题目 提交方式对照表
    UVA10382 Watering
    SGU104 Little shop of flowers
    UVA10673 Play with Floor and Ceil
    SGU123 The sum
    SGU106 The equation
    SGU105 Div 3
    UVA10905 Children's Game
    SGU101 200分类
  • 原文地址:https://www.cnblogs.com/orlion/p/5316493.html
Copyright © 2011-2022 走看看