结构体

目录 : 1.结构体类型的声明.

           2.结构体变量的定义和初始化.

           3.结构体传参.

前言 : 结构是一些值的集合,这些值被称为成员变量.

结构的每个成员可以是不同类型的变量.  ----成员变量可以是标量,数组,指针和其他结构体.


1.结构体类型的声明struct tag(自定义)        或者通过     typedef  struct stu

                                {                                                        {

                                        成员                                                        成员

                                };                                                          }stu;

两个相同之处在于都是结构体定义;

第二种则将struct stu重命名为stu.

2.结构体变量的定义和初始化 : 对结构体变量初始化通过 "{ }"  --大括号!!!.

eg : 

#include<stdio.h>

struct Point
{
    int x;
    int y;
}s1,s2,s3;   //此时s1,s2,s3是全局变量,但是下面的p1,p2都是局部变量.

typedef struct Point
{
    int a;
    int b;
}point;    //point为struct Point 重命名

int main()
{
    struct Point p1={2,3};    //结构体变量定义和初始化.  
    point p2={4,5};           //通过typedef来将struct Point修改成point.

}

//两个性质相同,只是写法不同,写代码时选取一种即可.  但是不排除成员变量为结构体!!!

结构体变量输出,通过对结构体成员的访问.

3.结构体传参 : 和函数传参相似

        (1).传值  :  通过 " . "对成员变量的访问

        (2).传址 : 通过 " -> "对成员变量访问.

  注意:我们一般运用第二种,因为传值是形参对实参的临时拷贝,传址则会节约空间和时间.

#include<stdio.h>


struct S
{
	float score;
	char tele[12];
	int age;
};

struct T
{
	char name[20];
	char sex[6];
	struct S s;   //结构体中的成员变量可以是结构体
};

void Print1(struct T tmp)  //传值通过  " . " 逗号来访问成员变量
{
	printf("%s\n", tmp.name);
	printf("%s\n", tmp.sex);
	printf("%lf\n", tmp.s.score);  
	printf("%s\n", tmp.s.tele);
	printf("%d\n", tmp.s.age);
}

void Print2(struct T* tp)	//传址  通过  " -> "箭头来访问
{
	printf("%s\n", tp->name);
	printf("%s\n", tp->sex);
	printf("%lf\n", tp->s.score);
	printf("%s\n", tp->s.tele);
	printf("%d\n", tp->s.age);
}
int main()
{
	struct T t = { "张三三","男",{99,"15982722354",18} };
	Print1(t);    //结构体传参,通过  传值
	Print2(&t);		//传址  
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值