C语言 小白学习笔记——简单的结构体

结构体的格式:

struct 结构体名称
{
	数据类型 成员a;
	数据类型 成员b;
	...... 
	数据类型 成员n ;
};

结构体的初始化:

#include<stdio.h>
struct object
{
	char a1[100];
	char a2[100];
	int a3;
	int a4;
}
int main()
{
	struct object an = {"How are you!","Are you ok?",233,666};
	
}
这个时候,an={} 花括号里面的东西就会按顺序依次赋给成员a1[100]
			   成员a2[100],成员a3,成员a4.

结构体成员的访问
[访问的话用(定义的变量).(成员)或 (定义的变量)->(成员)]:
例:

-----先定义一个结构体-----#include<stdio.h>
#include<string.h>
struct object
{
	int a;
	char b;
	char c[100];
};
int main()
{
	struct object op;//定义一个结构体变量op
	op.a = 4; //(op的成员a的值为4)
	op.b = 'C'; //(op的成员b的值为C)
	strcpy(op.c,"How are you!");//(op的成员c表示:“How are you!”)
	printf("%d-%c-%s",op.a,op.b,op.c);
}
除此之外 还可以用指针
int main()
{
	struct object op;//定义一个结构体变量op
	struct object *opc= &op;//定义一个指向op的结构体指针
	---------------------------------
	opc->a = 4; //(op的成员a的值为4)
	opc->b = 'C'; //(op的成员b的值为C)
	---------------------------------
	(*opc).a = 4;//(op的成员a的值为4)
	(*opc).b = 'C';//(op的成员b的值为C)
	---------------------------------
	strcpy(opc->c,"How are you!");//(op的成员c表示:“How are you!”)
	printf("%d-%c-%s",opc->a,opc->b,opc->c);
}

两者都会输出:
4-C-How are you!

上面的三道绿线中间的是指针的两种用法,注意第二种必须加括号,因为’ . ‘的运算优先于’ * ’

此外,请注意,不要把(*opc).a 写成 *(opc).a这样会报错:
error: request for member ‘ada’ in something not a structure or union.
结构体的镶嵌:

#include<stdio.h>
struct object
{
	char a1[100];
	char a2[100];
	int a3;
	int a4;
}
struct pc
{
	struct object p1c;//相当于在结构体pc中又添加了个p1c结构体变量。
	int p2c;
};
int main()
{
	struct pc an = {"How are you!","Are you ok?",233,666,555};
	//仍然是按顺序赋给各成员,不过在pc那种结构体中,先把内部的
	//结构体struct object p1c拆开再依次赋值。
	//其中:
	//an.plc.a1 = How are you!|
	//an.plc.a2 = Are you ok? |
	//an.plc.a3 = 233		  | <-访问成员格式an.p1c.xx
	//an.plc.a4 = 666		  |
	//an.p2c = 555			  |
}

当然,这些都是结构体的一些基本东西,结构体除了这些基本的还有很多东西,应用也很灵活。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值