数据结构01

工作一年多,越来越明白数据结构的重要性,开始重学数据结构

1.指针

指针存的是数组的第一个元素的第一位内存的地址

指针指向第一个元素的地址 ,和第二个元素的地址,与元素的类型有关

指针存的地址的位数与机器操作系统位数有关(内存单元大小),32位 64位

操作系统位数32位,2^32 最大寻址 ,有效内存4G

64位 有效内存理论有128G

指针有两个属性 一个是地址,一个是空间的长度

int * p ,int * 是长度 p是地址

2.结构体

struct Model {}自定义

struct Model m 声明

&m 对象m的地址

传参可以直接传结构体,也可以传它的地址,赋值给形参指针 //(不过声明的时候要指定类型,分配指定位数,不然解析不出来)

struct Model * p //(struct Model *) 是这个指针p的类型

(*p) // (*p)相当于对象实例了

(*p).value //对象的属性

p->value === (*p).value 等价

3.malloc 动态分配(开辟空间)

c语言通过malloc 可以实现动态分配

自定义int数组长度 len

int * pArr=(int *)malloc(sizeof(int) *len)

malloc括号里输入要开辟字节数,会返回一个指向它的指针(未定义类型的,属于字节型空间void *) (指针只存了对象第一个字节的地址)

为什么要强制类型转换?

开辟了空间之后要定义每个空间的大小,就要通过强制空间转换来实现,(告诉编译器);不强制转换也行(可能编译器会自动转),要赋值的指针有它的类型,反正开辟之后的空间啥数据都没有,随便给指针赋值都是第一个字节的地址,空间大小根据最后指针的类型来决定

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值