嵌入式C语言学习记录2025-1-23

数据类型:

基本数据类型:

        整数类型
        浮点数类型
        字符型
        缺省类型
        泊尔类型

构造数据类型:

        结构体
        共用体
        枚举

结构体:

结构体类型定义:
struct 结构体名 {
数据类型1 成员变量1;
数据类型2 成员变量2;
数据类型3 成员变量3;
...
};
结构体变量的定义:
        数据类型 变量名;
结构体的初始化:
        全部初始化:
struct student s = {"zhangsan", 'm', 19, 100};
局部初始化:
struct student s = { .name = "zhangsan", .score = 100, };
结构体元素访问:
        结构体访问成员变量最终的类型由成员变量决定
        1. 结构体变量访问成员变量:
        
使用  .  访问

        2. 结构体指针访问成员变量:

使用 ->  访问
结构体的存储:
内存对齐:
        结构体成员变量只能存放在内存地址为自身基本类型长度整数倍的内存单元中
        结构体整体的大小必须为最大类型长度的整数倍
结构体作为函数参数:
结构体数组:
数据类型 数组名[元素个数];

共用体(联合体):

union
        共用体与结构体定义、元素访问都是一致的
        结构体成员变量空间是独立的,共用体成员变量空间是共享的

内存大小端:

        内存低地址存放低数据位称为小端
        内存低地址存放高数据位称为大端

枚举

enum 枚举类型名 
{ 
    枚举常量1, 
    枚举常量2, 
    枚举常量3,
     ... 
};

枚举常量第一个值默认为0,后续枚举常量的值为前一个枚举常量的值+1
位运算符
& 按位与     与0得0 
| 按位或     或1置1
~ 按位取反 
^ 按位异或   异或取反
>> 右移 
<< 左移 

让num的第n位置1: num |= 1 << n; 

让num的第n位置0:  num &= ~(1 << n);

typedef

typedef语法是用来为现有数据类型创建一个新的名字的关键字。

语法格式:
        typedef 原始数据类型 新数据类型名字。
通过使用typedef,我们可以使用新的名字来代替原始数据类型,使代码更加美观和可读性更高。

typedef 等价于rename

typedef struct student 
{ 
    char name[32]; 
    char sex; int age; 
    int score; 
}stu_t;     //定义struct student类型别名为 stu_t


struct student s; 
stu_t s;

申请释放堆区空间

malloc 函数
void *malloc(size_t size); 
功能:申请堆区内存空间 
参数:size:申请空间的大小 
返回值: 成功返回申请到的堆区空间的首地址 
        失败返回NULL
free 函数
void free(void *ptr); 
功能:释放申请的堆区空间 
参数:ptr:指针指向的空间 
返回值:缺省
内存溢出、内存越界
        存放的数据空间超过申请的空间大小,操作超过申请空间大小的数据,称为内存溢出、内存越界
内存泄露
        malloc申请的空间没有被 free 掉,就会产生内存泄露

练习

1. 使用异或运算符完成两数的交换;
#include <stdio.h>

int main(void)
{
	int a = 100;
	int b = 200;

	a = a ^ b;
	b = a ^ b;
	a = a ^ b;

	printf("a = %d, b = %d\n", a, b);

	return 0;
}
2.使用共用体实现对内存大小端的判断。
#include <stdio.h>

union s
{
	char a;
	int b;
};

int main(void)
{
	union s s1;

	s1.b = 1;
	if (s1.a)
	{
		printf("小端!\n");
	}
	else 
	{
		printf("大端!\n");
	}

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值