当前位置: 首页 > news >正文

贵州城乡住房建设部网站网站模板套用教程

贵州城乡住房建设部网站,网站模板套用教程,城乡建设网站职业查询,wordpress 分类名一、 结构体的基础知识 结构是一些值的集合,这些值称为成员变量结构的每个成员可以是不同类型的变量 (1)结构体的声明 写法一: 注: 括号后边的分号不能忘结构体末尾可以不创建变量,在主函数中再创建 struc…

一、 结构体的基础知识

  • 结构是一些值的集合,这些值称为成员变量
  • 结构的每个成员可以是不同类型的变量

(1)结构体的声明

写法一:

注:

  • 括号后边的分号不能忘
  • 结构体末尾可以不创建变量,在主函数中再创建
struct Book
{char name[20]; //书名int price; //价格
};

写法二:

注:

  • 在结构体末尾和主函数中都可以创建变量
  • 区别:结构体后边直接创建的是全局变量,在主函数中创建的是局部变量

在这里插入图片描述
写法三:

注:

  • 可以利用 typedef 重命名或定义结构体
  • 若使用 typedef 定义,则结构体末尾不能创建全局变量,而应该写结构体新的名称,新名称后边的分号不能丢失
  • 若非要创建全局变量,需单独创建
  • 此处,新的结构体名称 Book 代替的是 struct Book 这一整体,在创建结构体变量时,可直接写Book b5;来代替struct Book b5;
typedef struct Book
{char name[20];int price;
}Book; //不可以创建全局变量,此处是新的结构体名//如果实在想使用全局变量,需单独创建
Book b3;
Book b4;int main()
{struct Book b1;struct Book b2;Book b5;Book b6;return 0;
}

(2)结构成员的类型

  • 结构的成员可以是标量、数组、指针,甚至是其他结构体
struct S
{char c;char arr[10];int *p;
};struct B
{int a;struct S s;double d;
};int main()
{return 0;
}

(3)结构体变量的初始化

例1:

struct S
{char c;char arr[10];int* p;
};struct B
{int a;struct S s;double d;
};int main()
{struct S s1 = { 'c',"张三",NULL }; //初始化int a = 10;struct B s2 = { 100,{'q',"list",&a},3.14 }; //结构体嵌套初始化return 0;
}

例2:

  • 初始化时可以按顺序初始化,也可以不按顺序
struct Book
{char name[20];int price;
};int main()
{//按顺序初始化struct Book b1 = {"鹏哥C语言", 66};//不按顺序初始化struct Book b2 = { .price = 80, .name = "杭哥C++"};//打印printf("%s %d\n", b1.name, b1.price);printf("%s %d\n", b2.name, b2.price);return 0;
}

在这里插入图片描述

二、 结构体成员的访问

访问结构体成员的方式:

  • 结构体变量 . 结构体成员
  • 结构体指针 -> 结构体成员
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>struct Book
{char name[20];int price;
};void print(struct Book* p)
{printf("%s %d\n", p->name, p->price);
}int main()
{struct Book b1 = {"鹏哥C语言", 60};struct Book b2 = { .price = 80, .name = "杭哥C++"};struct Book b3 = { "JAVA",70 };//结构体变量.结构体成员printf("%s %d\n", b1.name, b1.price);printf("%s %d\n", b2.name, b2.price);//结构体指针->结构体成员struct Book* p1 = &b3;print(p1); //结构体地址传参return 0;
}

在这里插入图片描述

三、结构体传参

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>struct S
{int arr[100];int n;
};void print1(struct S ss)
{for (int i = 0; i < 10; i++){printf("%d ", ss.arr[i]);}printf("\n%d\n", ss.n);
}void print2(struct S* ps)
{for (int i = 0; i < 10; i++){printf("%d ", ps->arr[i]);}printf("\n%d\n", ps->n);
}int main()
{struct S s = { {1,2,3,4,5}, 100 };print1(s);print2(&s);return 0;
}

在这里插入图片描述

❗上面的 print1 和 print2 函数哪个好些❓

  • 答案:首选 print2 函数。

原因:

  • 函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。

结论:

  • 结构体传参的时候,要传结构体的地址。
http://www.mmbaike.com/news/24608.html

相关文章:

  • 台湾疫情最新情况成都专业seo公司
  • 国外h5制作网站超级搜索引擎
  • 网站建设设计服务公司青岛网站推广公司排名
  • 华强北商城官网appseo网站推广公司
  • iis部署网站无法访问百度竞价返点一般多少
  • 腾讯云 安装wordpress搜索引擎优化的英文
  • 商城网站代理系统最佳磁力吧ciliba
  • 自己注册公司网站seo推广和百度推广的区别
  • 做网站建设出路在哪里模板网站建设
  • 理财网站如何做推广人力资源和社会保障部
  • 如何建b2b网站河源市seo点击排名软件价格
  • wordpress 自定义上传图片企业网站seo公司
  • 手机网站有免费做的吗关键词排名关键词优化
  • wordpress流量站百度推广首页
  • 企业网站设计欣赏百度官网进入
  • 移动应用开发和网站开发网络营销软件网站
  • 怎么做网站自己当站长小时seo
  • 三网合一营销型全网站今日头条军事新闻
  • 辽宁省建设厅网站更新长春seo培训
  • 做app好 还是讯网站好微软优化大师
  • 哈尔滨市做网站公司石家庄抖音seo
  • 东莞企业网站推广怎么做企业网站营销的典型案例
  • 网站制作容易吗百度贴吧官网
  • 临沂网站建设技术支持高端网站建设公司
  • 温州建站平台网站开发
  • 微网站设计与制作怎么样在百度上免费推广
  • 做3d任务的网站百度竞价渠道代理
  • 丰台区的建设网站设计网站logo
  • 优质的外国网站网站怎么优化排名的方法
  • 海南平台网站建设平台高权重网站出售