结构体

结构体成员赋值

#include <stdio.h>
#include<string.h>//使用了strcpy命令
struct Student {
    char  name[32];   //姓名
    int  age;     //年龄
    float  score;   //成绩
};
int main(){
struct Student student1;
struct Student student2;

strcpy(student1.name,"张三"); 
student1.age = 19;
student1.score = 90.5;

strcpy(student2.name,"李四");
student2.age = 18;
student2.score = 95.5;
printf("姓名\t年龄\t分数\n");
printf("%s\t%d\t%.1f\n",student1.name,student1.age,student1.score);
printf("%s\t%d\t%.1f\n",student2.name,student2.age,student2.score);
}

输出结果:
在这里插入图片描述
可以通过student2 = student1;来给student2直接赋student1的数值而不用单独赋值student2

也可以直接赋值

struct Student student1 = {"张三",19,90.5};
struct Student student2 = {"李四",18,95.5};

##上面的都是整体赋值,也可以部分赋值:
也可以像下面部分初始化。

struct Point3D{
    int x;
    int y;
    int z;  
};
struct Point3D p = {.x=10,.z=20}; 

##x和z的位置可以呼唤,没有位置限定,但是需要在前面加上.
##也可以定义结构体并同时定义结构体变量和赋值

struct Student {
    char  name[32];   //姓名
    int  age;     //年龄
    float  score;   //成绩
};student1,student2;

或者

struct Student{
    char  name[32]; //姓名
    int  age; //年龄
    float  score; //成绩
};student1 = {“Chen”, 19, 90.5};

##c语言有很多种类型,不同类型的数据大小分别是多少呢?

#include<stdio.h>
int main(){
printf("zeof(char)=%d\n",sizeof(char));
printf("sizeof(short)=%d\n",sizeof(short));
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(long)=%d\n",sizeof(long));
printf("sizeof(long long)=%d\n",sizeof(long long));
printf("sizeof(float)=%d\n",sizeof(float));
printf("sizeof(double)=%d\n",sizeof(double));
printf("sizeof(long double)=%d\n",sizeof(long double));
}

##输出结果为,分别是字节数的个数:
在这里插入图片描述
##可以看到long和long long字节数的长度都是8,那么他们的区别呢?
##因为每个浮点类型的精度不同因此

#include<stdio.h>
int main(){
float n=123456789.0;
double m=123456789.0;
printf("n=%f\n",n);
printf("m=%lf\n",m);
}

输出为:
n=123456792.000000
m=123456789.000000
因为float的精度只有6-7为有效数字,因此他到第八位就会混乱,而double的有效数字是15-16位,因此他的数字输出没有乱,并且浮点类型没有unsigned

在这里插入图片描述

浮点数不能直接比较相等,但是可以比较大小

float a = 10.2;  
   float b = 9;  
   float c = a - b;
   if(fabs(c - 1.2) < 0.000001)

在误差范围内认为相等。即绝对值差小于精度最小值。
float浮点数误差通常为1{^-6}(6位有效数字)。
double浮点数误差通常为1^{-15}(15位有效数字)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值