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

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.kler.cn/a/308416.html

相关文章:

  • Springboot配置全局异常通用返回
  • Go语言 实现将中文转化为拼音
  • Scala学习记录,case class,迭代器
  • ctfshow-web入门-SSTI(web361-web368)上
  • python: postgreSQL using psycopg2 or psycopg
  • Springboot 日志处理(非常详细)
  • Linux基础3-基础工具4(git,冯诺依曼计算机体系结构)
  • 一步迅速了解Linux
  • 校园失物招领小程序
  • Jackson注解屏蔽某些字段读取权限
  • uniapp离线(本地)打包
  • 解读 Java 经典巨著《Effective Java》90条编程法则,第5条:优先考虑依赖注入来引用资源
  • 国内领先的App全渠道统计服务商,让数据驱动运营决策
  • yolov5s网络结构
  • 检测场景变化并将视频按场景分开
  • 特殊类的设计与类型转换
  • Axure RP实战:打造高效图形旋转验证码
  • [网络]TCP/IP协议 之 数据链路层和DNS
  • GFS 分布式文件系统 GlusterFS
  • Flip动画的实现示例demo
  • 星火AI图片理解API文档
  • SpringBoot项目请求返回json空字段过滤
  • Element-UI 组件实现面包屑导航栏
  • 怎么使用ai 免费生成ppt?这4个工具可以帮忙
  • 人工智能与机器学习原理精解【20】
  • 信息安全工程师(6)网络信息安全现状与问题