C语言_结构体(struct tag)

1



1> 自定义类型

用户按C语言规则,自定义类型;

//--------------------------//
struct basketball {
	char 	brand[18]; 
	int		size;       
	char	colour[8]; 
	float 	price;     
}; 
//--------------------------//

结构体类型名:basketball;
结构体成员: brand, size, 
            colour, price;
//--------------------------//
自定义一个:
	 struct basketball类型;
声明一个:
	struct basketball类型;
//--------------------------//  
         
  • 与数组相比,结构体封装的的数据类型可以不同;
  • 封装的数据brand,size,colour,price 是关联的,都是basketball的属性,因此封装起来,使用方便;

2

1

1


2> 结构体变量_声明

//--------------------------//
/* struct  basketball 类型 */

struct basketball {
	char 	brand[18]; 
	int		size;       
	char	colour[8]; 
	float 	price;     
}; 
//--------------------------//


/* 定义结构体变量 */
struct basketball aa;
"struct basketball 是整体"

//--------------------------//
struct basketball 类型名太长!

/* 类型起别名,方式1 */
typedef struct basketball BALL;

BALL aa;

/* 类型起别名,方式2 */
typedef struct basketball {
	char	brand[18];
	int		size;
	char	colour[8];
	float	price;
} BALL;

//--------------------------//

3> 结构体变量_初始化

typedef struct basketball {
	char	brand[18];
	int		size;
	char	colour[8];
	float	price;
} BALL;

// 初始化方式1:
BALL aa = 
	{
		"LiNing",
		 7, 
	 	"Brown",
		888.8
	};

// 初始化方式2(推荐使用):
BALL aa = 
	{
		.band = "LiNing",
		.size = 7, 
	 	.colour = "Brown",
		.price = 888.8
	};


只有初始化时:
才可一次写入多个数据;
{ } 初始化列表;

数据类型与结构体成员类型一致;
用‘逗号’(,)隔开, 与数组一样;

  • 使用中,一把都是单个元素使用;
    1

4> 结构体_成员空间_读写

#include <stdio.h>
#include <string.h>

//结构体变量类型,定义为全局;
typedef struct basketball {
    char    brand[18];
    int     size;
    char    colour[8];
    float   price;
} BALL;

int main()
{
    BALL aa;

    strcpy(aa.brand, "LiNing");
    aa.size = 7;
    strcpy(aa.colour, "Brown");
    aa.price = 888.8;


    printf("Bran:   %s\n",aa.brand);
    printf("size:   %d\n",aa.size);
    printf("colour: %s\n",aa.colour);
    printf("price:  %f\n",aa.price);

    return 0;
}

‘.’ 成员运算符;
结构体变量名.成员名

数组的访问,不能一次性全部赋值
aa.brand = “LiNing” ( x )

成员运算符【.】, 很有意思,非常形象;类似目录,子目录,比如 [1>] 下面的 [1.1>] [1.2];


5> 结构体_指针

//--------------------------//
//  测试代码:              //
//--------------------------//
#include <stdio.h>

typedef struct basketball {
    char    brand[18];
    int     size;
    char    colour[8];
    float   price;
} BALL;

int main()
{
    BALL aa = {"LiNing", 7, "Brown", 888.8};

	/* 指向结构体的指针 */
    BALL *ptr = &aa;

    printf("--------内存地址-----------\n\n");
    printf("brand  > %p\n", &aa.brand);
    printf("size   > %p\n", &aa.size);
    printf("colour > %p\n", &aa.colour);
    printf("price  > %p\n\n", &aa.price);

    printf("--------内存数据-----------\n\n");
    printf("brand  = %s\n", aa.brand);
    printf("size   = %d\n", aa.size);
    printf("colour = %s\n", aa.colour);
    printf("price  = %f\n", aa.price);

    printf("---------------------------\n");
    printf("ptr    > %p\n", &ptr);
    printf("ptr    = %X\n", ptr);

    printf("---------------------------\n");
    printf("brand: %s\n",  aa.brand);
    printf("brand: %s\n", (*ptr).brand);
    printf("brand: %s\n", ptr->brand);
    printf("size:  %d\n", ptr->size);
    
    return 0;
}

1

//--------------------------//
*ptr 得到:内存空间aa;
-------------------------
内存空间4个属性:
  1>内存地址:0x0060FEDC2>内存大小:36Byte;
  3>数据类型:BALL;
  4>数据数值:{"LiNing", 7, "Brown", 888.8}
	
---------------------------
(*ptr).brand 相等于 aa.brand
---------------------------
为方便书写,使用
结构体成员运算符 -> 简写
ptr->brand;
//--------------------------//
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在C语言中,结构体的属性是通过成员变量来定义的。结构体的声明语法如下: struct \[structure tag\] { member definition; member definition; ... member definition; } \[one or more structure variables\]; 其中,结构体标签是可选的,用于给结构体类型起一个名称。成员变量是结构体中的属性,可以是任意数据类型,可以有多个成员变量。结构体变量的定义可以在结构体声明之后,也可以在结构体声明的同时进行。结构体变量可以通过结构体标签和成员变量名来访问。 例如,下面是一个描述学生的结构体的例子: typedef struct student { char name\[20\]; char sex\[5\]; char id\[20\]; short int age; } student; 在这个例子中,student是结构体的标签,可以用来定义结构体类型的变量。结构体类型的成员变量包括name、sex、id和age,它们分别表示学生的姓名、性别、学号和年龄。可以通过结构体变量来访问这些成员变量,例如mation.name表示访问mation结构体变量的name成员变量。 需要注意的是,结构体类型的成员变量的数据类型要与实际使用时的数据类型相匹配,否则可能会导致错误。在打印结构体变量时,要使用与成员变量类型相匹配的占位符。 此外,还可以定义一个空的结构体,用于暂时占位,待后续填充成员变量。例如: struct Books { // TODO } book; 这样定义的book结构体变量暂时没有任何成员变量,可以在后续的代码中进行填充。 总结起来,C语言中的结构体属性是通过成员变量来定义的,可以通过结构体标签和成员变量名来访问。 #### 引用[.reference_title] - *1* *3* [【C语言结构体类型](https://blog.csdn.net/qq_40171445/article/details/122887651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【C语言结构体](https://blog.csdn.net/weixin_52632755/article/details/119980420)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值