嵌入式基础总结5

const和void

const:常量化

const int a = 10;

int const a = 10;

<数据类型> const * 指针变量名 = 初始化值;
<数据类型> * const指针变量名 = 初始化值;

void:

数据类型

  1. 函数

void func(void)
{

}

  1. void* p;

void修饰的指针变量可以指向任何数据类型的指针

int *q;
char *l;

函数

  1. 概念

完成特定功能的代码块集合

  1. 函数应该关心的三大问题

[1]. 功能
[2]. 参数
[3]. 返回值

  1. 函数的一般定义形式

<数据类型> 函数名(<形参列表>)
{
代码块;
return [返回值];
}

  1. 函数的传参

  2. 赋值传参

  3. 地址传参

  4. 数组传参

[1]. 完成两个整型数据相加
[2]. 交换两个整型数据值

  1. 指针函数&函数指针

  2. 指针函数

返回值是指针的函数

一般定义形式:

<数据类型> * 函数名(<形参列表>)
{
代码块集合;
return 指针;
}

char *mystrcpy(char *dest, const char *src)
{

}
char *mystrcat(char *dest, const char *src)
{

}
  1. 函数指针变量

本质:指针变量
特点:该指针变量指向函数的地址

一般定义形式:

<数据类型>(*函数指针变量名)(<形参列表>);

<数据类型>(*)(<形参列表>);

[1].typedef

数据类型重命名

typedef int INT;

条件编译&函数宏

[1]. 条件编译作用

  1. 调试
  2. 头文件中使用,防止头文件重复包含
#include <stdio.h>
#include <head.h>

<head.h>

#ifndef _HEAD_H
#define _HEAD_H

#inclde <stdio.h>

void func(int,int);

#endif 
  1. 增加代码的可移植性
#define 宏名

#ifdef
xxxx
#endif

#ifndef
xxxx
#endif

#ifdef
xxxx
#else
xxxx
#endif

#if 0
xxxx
#endif

int max(int a,int b)
{
return a>b?a:b;
}

#define MAX(c,d) ((c)>(d)?(d):(d))
.....
.....
MAX(a,b);
.....
.....
MAX(a,b);
.....
MAX(a,b);

do{
...
}while(0)

一级指针

char a = 10;
char *p = &a;

printf("%d, %p, %p, %p", a, &a, p, &p);
printf("%d %d", *p, a);

野指针

	防止野指针;赋值为空指针
NULL】空指针
char *p = NULL;

【指针的运算】
+n 高地址方向移动n个数据元素;
-n 低地址。。。。

++ 高地址方向偏移1个数据元素;
-- 低地址。。。。

同等类型的指针间 - 法。 计算指针间相差几个同等类型的元素个数;

不同数据类型的两个指针实行加减整数运算是无意义的。

二级指针

一级指针(变量):变量的首地址
char a = 5;
char *p = &a;
&p  指针自己的存储空间地址
char  **q;
**q = &p;

char **q = &p;

结构体

本质:数据类型(构造数据类型/自定义数据类型)
作用:修饰变量,确定变量在内存空间中的大小

结构体数据类型一般定义形式:

struct 数据类型名{
<成员变量>;

};

大小端:

大端:数据的高字节,存储在内存的低地址
小端:数据的高字节,存储在内存的高地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值