结构体成员相关知识

简介: 结构体成员相关知识
#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
struct s
{
    char c;
    short s;
    double d;
};
struct stu//类型
{
    //结构体成员可以是标量,数组,指针,甚至是其他结构体
    //结构体成员 name    age   id    struct s(其他结构体)
    struct s s;
    char name;
    int age;
    char id;
}s1, s2;//s1,s2是结构体变量的全局变量
//结构体成员访问
//操作符  . 
void print1(struct stu s)//传值调用          ----p43
{
    printf("%d\n", s.s);
}
void prin2(struct stu *ps)
{
    printf("%d\n", ps->s);//传址调用       ------p44
}
int main()
{
    struct stu s = { {'c',20,1.0},"家辉",22,"20000103"};//对象 //用{}初始化,初始化值为"家辉",22...
//内侧{}里是struct s赋予的变量,如将c赋予char c..外侧{}里是struct stu赋予的,如将“家辉”赋予char name
    printf("%c\n", s.s.c);//打印结果为c 
    //因为s.是int main的struct stu s中,,,
    //s.s.是int main的struct stu s的struct s s中,,,
    //s.s.c是int main的struct stu s的struct s s的char c中的值(只有初始值c,所以打印c)
    printf("%c\n",s.name);
    //操作符    ->(有指针的时候用)
    struct stu*ps =&s;//拿出来s地址为&s,放在ps的结构体struct stu中,*表示ps是指针,
    printf("%c\n", (*ps).s.c);//打印结果为c,解地址,使之变为值(用指针代替s访问struct stu s )
    //也可以写成
    printf("%c\n", ps->s.c);//打印结果也为c,不用解地址,->使之变为值(ps为地址,指向ps里面的s)
    print1(s);//传值调用(浪费时间和空间)
    print2(&s);//传址调用(推荐传参用)
               //因为函数传参时,参数压栈,如果传递一个结构体对象,结构体过大,
               //参数的系统开销比较大,会导致性能的下降
    //传值调用,会造成压栈时的浪费
    return 0;
}//每一个函数调用都会在内存的栈区上开辟一个空间


相关文章
|
9月前
【结构体】
【结构体】
20 0
|
2月前
|
存储 编译器 Linux
匿名结构体类型、结构体的自引用、结构体的内存对齐以及结构体传参
匿名结构体类型、结构体的自引用、结构体的内存对齐以及结构体传参
|
11天前
|
编译器 Linux C语言
浅谈结构体
浅谈结构体
15 1
|
2月前
|
安全
C learning_15 结构体类型的声明、结构体初始化、结构体成员访问、结构体传参
C learning_15 结构体类型的声明、结构体初始化、结构体成员访问、结构体传参
|
2月前
访问共用体成员
【2月更文挑战第11天】访问共用体成员。
18 1
|
2月前
|
设计模式 安全 C++
C++ 特殊成员
C++ 特殊成员
41 0
|
2月前
|
算法 C语言
结构体相关知识
结构体相关知识
|
11月前
|
编译器
|
11月前
|
C++
C++特殊成员
C++特殊成员
|
存储 编译器 Linux
结构体讲解
在我们记录和实现一个复杂的事务时,我们通常需要多种基本类型,比如在我们记录一个学生信息的时候,这个时候我们就需要整型来记录年龄,字符型记录名字和性别等等
84 0

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    25
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    26
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    26
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    27
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    24
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    30
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    22
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    20
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    20
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    19