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

网站维护中页面网络营销策划方案模板

网站维护中页面,网络营销策划方案模板,欧米茄官方手表,搭建电商网站结构体C语言结构体详解1. 结构体的声明2. 结构体的定义(1)结构体定义与变量的区别(2)结构体嵌套​3. 结构体的初始化​4. 结构体成员的访问​(1)通过结构体变量访问(.操作符)​&…

结构体

  • C语言结构体详解
    • 1. 结构体的声明
    • 2. 结构体的定义
      • (1)结构体定义与变量的区别
      • (2)结构体嵌套​
    • 3. 结构体的初始化​
    • 4. 结构体成员的访问​
      • (1)通过结构体变量访问(.操作符)​
      • (2)通过结构体指针访问(->操作符)​
      • (3)两种访问方式的使用场景​
    • 5. 结构体传参​
      • (1)传值调用​
      • (2)传地址调用​
      • (3)两种传参方式的对比​
    • 6. 一句话总结​

C语言结构体详解

1. 结构体的声明

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

声明格式

struct 结构体名 {成员变量类型 成员变量名;// 更多成员变量...
};

示例:声明一个学生结构体

// 声明学生结构体
struct Student {char name[20];  // 姓名int age;        // 年龄float score;    // 成绩
};

用结构体实例化的两种情况:​

  1. 声明结构体后实例化
struct Student {char name[20];int age;float score;
};// 实例化结构体变量
struct Student stu1;
struct Student stu2;
  1. 声明结构体的同时实例化
struct Student {char name[20];int age;float score;} stu1, stu2;  // 声明时直接实例化变量

2. 结构体的定义

(1)结构体定义与变量的区别

  • 结构体定义:描述结构体的组成,不分配内存空间
  • 结构体变量:根据结构体定义创建的具体实例,会分配内存空间

示例

// 结构体定义(不占空间)
struct Book {char title[50];float price;int page;
};// 结构体变量(占空间)
struct Book b1;  // 分配内存,大小为50 + 4 + 4 = 58字节(不考虑内存对齐)

(2)结构体嵌套​

结构体的成员可以是另一个结构体。​

示例:​

// 声明日期结构体​
struct Date {int year;int month;int day;};​
​
// 声明图书结构体,嵌套日期结构体​
struct Book {char title[50];float price;struct Date publish_date;  // 嵌套结构体作为成员​
};​
​
// 实例化嵌套结构体变量​
struct Book b1;

3. 结构体的初始化​

使用{}对结构体变量进行初始化,顺序与结构体成员声明顺序一致。​

示例1:基本初始化

struct Student {char name[20];int age;float score;};​\\完全初始化​
struct Student stu1 = {"张三", 18, 90.5f};​
​\\不完全初始化(未初始化的成员自动为0或空)​struct Student stu2 = {"李四", 19};  // score默认为0.0f

示例 2:嵌套结构体初始化

struct Date {int year;int month;int day;
};struct Book {char title[50];float price;struct Date publish_date;
};// 嵌套初始化,内部结构体用{}包裹
struct Book b1 = {"C语言教程", 39.9f, {2023, 10, 15}};

示例 3:指定成员初始化(C99 支持)

struct Student stu = {.age = 20,.name = "王五",  // 可以不按声明顺序.score = 88.0f
};

4. 结构体成员的访问​

(1)通过结构体变量访问(.操作符)​

当直接使用结构体变量时,用.操作符访问成员。​

格式结构体变量名.成员名

示例:​

struct Student {char name[20];int age;float score;};​
​
int main() {struct Student stu = {"张三", 18, 90.5f};​​// 使用.操作符访问成员​printf("姓名:%s\n", stu.name);printf("年龄:%d\n", stu.age);​​// 修改成员值​stu.age = 19;​stu.score = 92.0f;printf("修改后年龄:%d\n", stu.age);return 0;}

(2)通过结构体指针访问(->操作符)​

当使用结构体指针时,用->操作符访问成员。​

格式结构体指针->成员名

示例:​

struct Student {char name[20];int age;float score;};​
​
int main() {struct Student stu = {"张三", 18, 90.5f};struct Student *p = &stu;  // 定义结构体指针,指向stu​// 使用->操作符访问成员​printf("姓名:%s\n", p->name);printf("年龄:%d\n", p->age);​​// 修改成员值​p->age = 19;​p->score = 92.0f;printf("修改后年龄:%d\n", p->age);return 0;}

等价写法:(*指针变量).成员名

printf("姓名:%s\n", (*p).name);  // 与p->name等价

(3)两种访问方式的使用场景​

  • .操作符:适用于直接操作结构体变量的场景,代码更简洁直观​
  • ->操作符:适用于通过指针操作结构体的场景,尤其在函数传参为结构体指针时使用​

    示例:函数中访问结构体成员
// 使用.操作符(需要结构体变量)​
void print_stu(struct Student s) {printf("姓名:%s,年龄:%d\n", s.name, s.age);}​
​
// 使用->操作符(需要结构体指针)​
void print_stu_ptr(struct Student *p) {printf("姓名:%s,年龄:%d\n", p->name, p->age);}

5. 结构体传参​

结构体传参分为传值和传地址两种方式。​

(1)传值调用​

将结构体变量作为参数传递,函数内部会创建一个结构体副本。​

示例:​

struct Student {char name[20];int age;float score;};​
​
// 传值调用,接收结构体变量​
void modify_stu(struct Student s) {​s.age = 20;  // 仅修改副本,不影响原变量​s.score = 95.0f;}​
​
int main() {struct Student stu = {"张三", 18, 90.5f};modify_stu(stu);  // 传结构体变量​printf("年龄:%d\n", stu.age);  // 输出18,原变量未被修改​return 0;}

特点:​

  • 函数内部修改不会影响原结构体变量​
  • 传递大结构体时,会占用较多内存和时间(拷贝整个结构体)

(2)传地址调用​

将结构体指针作为参数传递,函数内部通过指针访问原结构体。​

示例:​

struct Student {char name[20];int age;float score;};​
​
// 传地址调用,接收结构体指针​
void modify_stu_ptr(struct Student *s) {​s->age = 20;  // 通过指针修改原变量​s->score = 95.0f;}​
​
int main() {struct Student stu = {"张三", 18, 90.5f};modify_stu_ptr(&stu);  // 传结构体地址​printf("年龄:%d\n", stu.age);  // 输出20,原变量被修改​return 0;}

特点:​

  • 函数内部修改会影响原结构体变量​
  • 仅传递 4 字节(32 位系统)的指针,节省内存和时间​
  • 更推荐使用的传参方式,尤其对于大型结构体

(3)两种传参方式的对比​

传参方式实现方式内存占用能否修改原结构体适用场景
传值调用传递结构体变量整个结构体大小不能小型结构体,无需修改原结构体
传址调用传递结构体指针4字节(32位所有场景,尤其大型结构体

推荐做法:优先使用传地址调用,既节省资源,又能灵活控制是否修改原结构体(如需保护原结构体,可在函数参数前加const)。​

示例:保护原结构体的传址调用

// 加const修饰,防止修改原结构体​
void print_stu(const struct Student *s) {printf("姓名:%s,年龄:%d\n", s->name, s->age);// s->age = 20;  // 错误,不能修改const结构体​
}

6. 一句话总结​

内容关键点
结构体声明描述结构体组成,用struct 结构体名 {成员列表};格式
结构体定义与变量定义不占空间,变量占空间,变量是结构体的具体实例
结构体初始化{}初始化,嵌套结构体需嵌套{},可不完全初始化
成员访问变量用.操作符,指针用->操作符p->member等价于(*p).member
结构体传参传值调用不修改原变量,传址调用效率高且可修改原变量,推荐传址调用
http://www.dtcms.com/wzjs/366773.html

相关文章:

  • 邯郸网站优化平台搜狐视频
  • 怎么做网站排版宁波seo推广平台
  • 大学生做网站赚钱seo优化排名价格
  • 网站运营面试问题百度自媒体平台
  • 福州网站建设fjfzwl济南网站优化培训
  • 网站突然不被百度收录免费查权重工具
  • 制作免费个人网站代写稿子的平台
  • 注销网站 注销主体口碑营销的特征
  • 做网站要学什么c语言yw77731域名查询
  • 网站开发过程分为哪几个阶段138ip查询网域名解析
  • 信息型企业网站有哪些推广小程序
  • 洛阳霞光网络建站公司好用搜索引擎排名
  • 做网站线友情链接分析
  • 政府网站等保必须做吗最有创意的广告语30条
  • 网站建设免费域名今日油价92汽油价格表
  • 网站建设商务合同手机怎么搭建网站
  • 地方网站建设网络营销的方式有十种
  • 如何建立营销网络网站seo教程
  • 苏宁易购网站建设的目的营销培训讲师
  • 商业网站推荐网站排名搜索
  • 什么操作系统做网站整站优化方案
  • 遵义住房和城乡建设局官方网站百度地图推广电话
  • 做购物网站有什么要求吗网络营销推广平台有哪些
  • 企业网站建设 安全上海网站关键词排名
  • 商水县住房城乡建设网站百度模拟点击软件判刑了
  • 网站是别人做的域名自己怎么续费台州优化排名推广
  • 没有公司个人可以做网站卖东西吗源码交易网站源码
  • 太原网站建设制作武汉网络推广广告公司
  • 贵阳网站建设哪家百度外链查询工具
  • 延庆网站建设网络营销人员招聘