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

c语言 —— 结构变量

1.结构变量的定义
        类型和变量是不同的概念,只能对变量进行赋值、存取或运算操作,而不能对一个类型进行这些操作。因此在声明了结构类型后,还需要定义结构变量,以便在程序中引用它。结构变量和其他变量一样,必须先定义后使用,定义方法有以下3种:

(1)先定义结构类型,再定义结构变量。如
 

struct books
{int bno;char bname[20],field[10],author[10],publisher[30];float price:
};
struct books bookl ,book2 ;

(2)定义结构类型的同时定义结构变量。如

struct books
{    int bno;char bname[20],field[10],author[10],publisher[30];float price ;
}bookl , book2 ;


(3)直接定义结构变量。如

struct
{    int bno;char bname[20],field[10],author[10],publisher[30];float price;
}bookl,book2;


        方式(3)中由于省去了结构名,在此定义语句后面无法再定义这个类型的其他结构变量,除非把定义过程再写一遍。另外,以后如果再声明成员完全相同的结构类型,也和此次定义的结构类型属于不同的结构类型。若在上面的结构类型后面有语句“struct book3;”,则是错误的。同样下面的定义也是错误的:

struct
{    int m;float n;
}aa;
struct aa bb;

2.结构变量的初始化
        同其他基本数据类型的变量一样,结构变量在定义的同时也可以进行初始化。结构变量初始化的一般形式是在定义变量的后面加上“=(初值表列);”,即在一对花括号中分别列出结构变量中各成员的初始值,各初始值之间用逗号隔开。

结构体初始化示例

#include<stdio.h>
int main( )
{   struct books /*结构类型*/{int bno;char bname[20],field[10],author[10],publisher[30];float price;
};
struct books bk1=(100l," c programming" ," computer" ," xuwei" ," renminyoudian press" , 39. 0};/*初始化*/printf( " bno =% d\ nbname =% s\ nfield =% s\ n", bkl. bno, bkl. bname,bk1. field);printf("author=%s\n" , bkl. author);printf("publisher= %s\nprice= %f\n" ,bkl.publisher,bkl. price);return 0;
}

下面讲解几个错误点

(1)对结构变量初始化时,需要按照其成员出现的顺序对每个成员依次赋值,不能跳过前面的成员给后面的成员赋值,例如下面的用法是错误的。

struct books bkl=(1002, ,"computer", ,"renminyoudian press" ,39. 0};


(2)不能在结构内部给成员赋初值,例如下面的用法是错误的。
 

struct books
{
int bno=1001;
char bname[20]="c programming" ;
char field[10]="computer" ;
}

http://www.lryc.cn/news/440094.html

相关文章:

  • 一个py脚本,提供处理 GET 请求返回网站数据,处理 POST 请求接收并打印数据。支持跨域访问。
  • 【Elasticsearch系列六】系统命令API
  • c++概念
  • Makefile 学习笔记(一)gcc编译过程
  • mybatis的基本使用与配置
  • 2022高教社杯全国大学生数学建模竞赛C题 问题三问题四 Python代码
  • 易于理解和实现的Python代码示例
  • Visual Studio 2019/2022 IntelliCode(AI辅助IntelliSense)功能介绍
  • mac安装swoole过程
  • 代码随想录算法训练营第三十二天 | 509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯
  • Oracle发送邮件功能:配置自动化发信指南?
  • 探索 InternLM 模型能力边界
  • Python 数学建模——Pearson/Spearman 相关系数
  • QUIC的loss detection学习
  • 【QT】使用QOpenGLWidget后,窗口全屏之后右键菜单出不来的问题
  • MySQL 8.0授权语法变更及解决方案‌
  • 2024 VMpro 虚拟机中如何给Ubuntu Linux操作系统配置联网
  • 详解Diffusion扩散模型:理论、架构与实现
  • 坐牢第三十八天(Qt)
  • (十五)、把自己的镜像推送到 DockerHub
  • 【云岚到家-即刻体检】-day07-2-项目介绍及准备
  • SpringCloud Alibaba之Nacos服务注册和配置中心
  • 面试官:讲一讲Spring MVC源码解析
  • 815. 公交路线(24.9.17)
  • Rust: Warp RESTful API 如何得到客户端IP?
  • 添加选择登录ssh终端
  • 【基于 Delphi 的人才管理系统】
  • GetMaterialApp组件的用法
  • ubuntu安装mysql 8.0忘记root初始密码,如何重新修改密码
  • Vue3项目开发——新闻发布管理系统(七)