当前位置: 首页 > 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.mrgr.cn/news/28208.html

相关文章:

  • 详解HTTP/HTTPS协议
  • CAN FD协议详解
  • Redis常见应用场景
  • 【手撕】快排-分治
  • 【ESP32】ESP-IDF开发 | 中断矩阵+按键输入中断例程
  • 【23-24年】年度总结与迎新引荐
  • mtk7628 网口灯问题
  • 【数据结构】十大经典排序算法总结与分析
  • STM32—I2C
  • Andrej Karpathy谈AI未来:自动驾驶、Transformer与人机融合
  • 嵌入式Linux:向进程发送信号
  • 大模型笔记03--快速体验dify
  • dedecms靶场(四种webshell姿势)
  • 【Go】Go语言中的数组基本语法与应用实战
  • 建模杂谈系列256 规则函数化改造
  • 速通汇编(五)认识段地址与偏移地址,CS、IP寄存器和jmp指令,DS寄存器
  • 【C++】多态
  • dedecms(四种webshell姿势)aspcms webshell漏洞复现
  • 从冯唐的成事心法 看SAP协助企业战略落地到信息化
  • kubernetes中pause容器的作用与源码详解