笔记(嵌入式Linux C篇)3——变量、结构体长度、malloc

一、变量

定义:用来保存一些特定内容,并在程序执行过程中会随时发生变化的量。

定义方法:(存储类型) 数据类型 标识符 = 值

static int i = 0;

数据类型:基本数据类型+构造型

存储类型:auto、static、register、extern(说明型关键字)

auto:默认,自动分配空间(在栈上分配),自动释放空间;

static:静态型,自动初始化为0值或空值,并且其变量的值有继承性;

register:寄存器类型(建议型关键字),只能定义局部变量,不能定义全局变量,大小有限制,32位下只能定义32位大小的数据类型,double则不可以;

extern:说明型,不能改变被说明变量的值或类型,只声明不定义。

变量的生命周期:全局变量:从定义开始直到程序结束;局部变量:从声明位置开始直到当前块作用域(括号)结束。

二、结构体长度

声明一个结构体以及他的成员后,对这个结构体类型的一个结构体变量使用sizeof,发现长度并不是各个成员类型的长度进行简单的累加,比如struct student有成员int id和char name,而sizeof这个结构体,其占了8个字节而不是5个。原因就是结构体的内存对齐。

原则:1)结构体长度是最长成员字节长度的整数倍。

2)第二个及以后的成员,其起始地址需要能够整除其长度。

int main(void)
{

    struct student
    {
        int id;
        char name;
    };
    struct student std1;
    printf("size of struct: %d\n",sizeof(std1));
    exit(0);
}
size of struct: 8

三、malloc

动态分配内存,有利于内存的高效利用,一定要在一个模块中谁申请谁释放,用free释放。

函数:void *malloc(size_t size);返回的是堆上一块连续size个字节内存的首地址。

void *calloc(size_t nmemb, size_t size);返回连续nmemb个sisze大小空间的首地址。

void free(void *ptr);释放ptr指向的内存。

void *realloc(void *ptr, size_t size);给ptr重新分配size大小内存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值