嵌入式学习day15

int *p ;  定义 p变量为int *型

此时,p代表地址,p为指针

*p  表示对p作了*运算,偏移空间后的基类型的值

**p 表示存放指针*p地址的地址

分清指针变量本身的类型 和 指向目标的数据的类型

1.指针本身的类型,去掉指针名称,剩下的就是指针本身的类型

2.指向目标的数据的类型,比指针本身的类型少一个*,因为这个*在定义指针

eg 图中 int    *p   =   &a;指针p本身的类型为int *型,指针p指向目标的类型为int型。

             int表示指向的空间(a)里存的数据类型为int,表示存放的基类型

                     *表示定义了一个指针变量,这块空间(p)要里存放一个地址数据

eg 图中int *     *   q = &p; 指针q本身的类型为int **型,指针q指向目标的类型为int*型

            int*表示指向的空间(p)里存放的数据类型为int*型,表示存放的基类型

                      第二个*表示定义了一个指针变量q,这块空间(q)里要存放一个地址数据 

f)int(*a)[10]);// a代表数组a[10]的首地址,对a进行*运算表示取了数组a[10]的首地址,所以为数组整体的指针 g)、h)同理。

11.结构体、共用体、枚举

结构体 struct:

描述一些原先基本数据类型不好描述的,这种复杂数据类型

语法:

struct 结构体类型名

{

  数据成员列表;

};

eg: 描述学生这种类型

struct student

{

char name[20];         //1.姓名 

int age;                      //2.年龄

float sorce;                //3.成绩 

char sno;                   //4.学号

;            //最后这个分号,表示结构体运行完成

int main(void)

{

struct student s;//定义出一个  学生类型的   变量s

}

注意:

1.结构体---用来实现 自定义数据类型

2.用结构体

  a.先构造出数据类型

  b.用数据类型定义变量、数组、指针等

访问结构体:

 //结构体成员运算符

结构体变量名 成员变量名

eg:

struct student s = {“tom,20,59,5,110”};

printf(“name = %s\n”,s.name);

-> //用于访问结构体成员变量  指针时用

eg:void printTeacherInfo(struct teacher *t)

{

printf("name = %s\n",t -> name);

}


结构体的对齐规则:
1.在32位的平台上,默认都是按4字节对齐的。64位的平台默认是8字节
2.对于成员变量,各自在自己的自然边界上对齐。

//整个结构体的对齐
3.如果成员变量中有比4字节大。
此时整个结构体按照4字节对齐。4.如果成员变量中没有有比4字节大。
此时整个结构体按照最大的那个成员对齐。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值