结构变量2

//利用结构体表示:年月日

#include<stdio.h>
int main()
{
    //1. 定义结构体变量。不会分配存储空间
    struct Date
    {
        //按顺序分配
        int year;
        int month;
        int day;

     } ;
     //2. 定义结构体变量。(这个时候才会分配存储空间)
     struct Date d1 = {2011,4,10};//月份不可以写成09,07等,0开头是八进制。

     int s = sizeof(d1);
     printf("%d\n",s); //看结构体变量d2占用了多少个存储空间

      //输出d1中各个元素的地址
      printf("%p - %p - %p\n", &d1.year, &d1.month, &d1.day); 

    struct Date d2 = {2022, 6, 7    };
    //结构体所占用的空间必须是最大成员 字节的倍数。这叫补齐算法 or对齐算法
    d2 = d1;// 把d1的值复制给d2
    d2.year = 22222;//这个时候下面打印的还是2222,d2的值已经改变了
    printf("d2.year = %d\n",d2.year);
    return 0;
 } 
时间: 2024-08-02 11:03:36

结构变量2的相关文章

C++结构变量数据对齐问题

为了避免混淆.做例如以下规定,下面代码若不加特殊说明都执行于32位平台,结构体的默认对齐值是8,各数据类型所占字节数分别为 char占一个字节 int占四个字节 double占八个字节. 两个样例 请问以下的结构体大小是多少? struct Test { char c ; int i ; }; 这个呢? struct Test1 { int i ; double d ; char c ; }; 在发布答案之前先看一下对齐的规则. 对齐规则 一般来说,结构体的对齐规则是先按数据类型自身进行对齐,然

PL/SQL基本结构---变量赋值方式

*****************************************   变量赋值方式 ***************************************** oracle中变量赋值方式是值拷贝而非引用         declare         v_number1 number:=100;         v_number2 number;     begin         v_number2:=v_number1;         v_number1:=200

有n个结构变量,内含学生学号,姓名和3门课程的成绩。要求输出平均成绩的学生的信息

#include<stdio.h> # define N 3 struct Student {int num; char name[20]; float score[3]; float aver; }; int main() { void input(struct Student stu[]); struct Student max(struct Student stu[]); void print(struct Student stu); struct Student stu[N] , *p

结构变量输入不正确的顺序可能会导致不正确的操作结果

写一个程序,需求:由...制作3单向动态列表学生数据节点配置,输入学生数据向每个节点 (每个学生的数据包含学号.全名.成就).每个节点然后逐个输出数据. 正确的程序,如下面的: #include<stdio.h> #include<malloc.h> #define LEN sizeof(struct student) struct student { int num; char name[20]; float score; struct student *next; } ; vo

结构变量对齐知识

#pragmapack(push)//保存对齐状态 #pragmapack(4)//设定为4字节对齐 struct test{    char m1;    double m4;    int m3;}; #pragmapack(pop)//恢复对齐状态 原文地址:https://www.cnblogs.com/licona/p/9902291.html

语言中结构体变量和结构体类型的定义

1.结构体类型定义 定义方式1: Typedef struct  LNode {    int  data;  // 数据域    struct LNode   *next;  // 指针域 } *LinkList; 定义方式2: struct  LNode {    int  data;  // 数据域    struct LNode   *next;  // 指针域 }: Typedef struct  LNode  *LinkList; 以上两个定义方式是等价的,是将*LinkList定义

C语言中宏的运用------利用宏技术可以简化对某结构体变量的访问

利用宏技术可以简化对某结构体变量的访问 有时候,为了方便访问结构变量中的某个元素,我们可以利用宏去进行代码的替换. #include<stdio.h>#include<stdlib.h> struct data{ int len; int show;}; struct data Data;#define LEN Data.len  //为了访问而定义的宏 int main(){ LEN = 5; printf("%d\n",Data.len); Data.len

(C)struct结构体指针

结构体指针 指针结构与指针的关系亦有两重:其一是在定义结构时,将指针作为结构中的一个成员:其二是指向结构的指针(称为结构指针). 前者同一般的结构成员一样可直接进行访问,后者是本节讨论的重点. 结构指针说明的一般形式是: struct (结构类型名称) * (结构指针变量名);例如:struct date * pdate, today;说明了两个变量,一个是指向结构date的结构指针pdate,today是一个date结构变量. 语句: struct date{ int year; int mo

C结构

今天就写下C结构吧 C的结构分为2部分,声明结构和定义结构变量 声明结构 先讲声明结构把,直接上声明结构的格式 struct book { char title[40] ; char author[40]; float value } C结构说白了就是js的对象把,这个东西的存在就是为了将不用数据类型的数据放在一起.放在一起之后怎么才能找到这些数据呢? 这就用到了结构的第二个部分,定义结构变量,用结构变量去找这个结构的数据 定义结构变量 定义结构变量如下代码 struct book librar