您的位置:首页 > 运维架构 > Linux

苏嵌嵌入式Linux实训第五天

2020-07-14 06:34 183 查看

•运算符
位运算 &|^ >> << ~ 掩码
题:输入一个整数,将其转化成,32位二进制的表现形式

一定操作无符号数!!

掩码 想做计算时,有一个中间量来做与和或 最终获得我想要的数据
按位与运算通常用来对某些未清零或保留某些位
1)清0特定位,mask中特定位置0,其他位为1,s=s&mask
2)取某数中指定位,mask中特定位置1其他位为0,s=s&mask。
按位或运算“|”,常用来将源操作数某些位置1,其他位不变,mask中特定位置与其他位置为0,s=s|mask。

宏-#define
定义常量与命令(避免幻数)
#define MAX 100
#define SIZE 1024
#define LOGIN_SUCCESS 1
#define LOGIN_FAIL O
注意:在宏定义的命名时,尽量能够清晰的表明其用途;

代码的可读性:自注释性

函数的调用过程
一通过函数名找到函数的入口地址
二给形参分配空间
三传参
四执行函数体里的语句
五返回
六释放空间

预处理傻瓜式替换
特点省去函数调用返回的时间,同样省去了给形参分配空间和释放

宏函数的好处
总结用编译时间换内存空间和运行时间什么

什么样的函数需要写成宏函数?
频繁调用且功能短小,简单的函数

编程的规范与实例
表示度命名规范 重要 提高代码可读性

指针
一.指针是什么?指针是一个变量指针变量保存的是地质作用,能够直接操作地址,直接访问硬件
二.指针类型是根据存储的地址的类型(类型加步长)
三.*&运算符,取值运算符&取地址
四.多为指针的作用:保存前一为指针变量的地址
五.指针赋予<一定是相同指针类型赋值>及运算
六.万能指针:void:可以接收任何类型指针的值!(不能做取值和运算)
七.野指针

数组
1、数组的定义及初始化
2、数组名的作用
3、数组指针
*(&a)=a;
对一维数组的地址取值等于一维数组首元素的地址
数组指针pa:
int (*pa)[MAX_SIZE]=&a;
一维数组的单位是元素,二维数组的单位是一维数组,三维数组的单位是二维数组
二维数组名:指针常量,保存首个一维数组地址
三维数组名:指针常量,保存首个二维数组地址
*aaa = 首个二位数组的首个一维数组的地址
**aaa =首个二位数组的首个一位数组的首元素的地址

4、指针数组
5、main参数:命令行参数

函数的调用
作业:
二维数组名:指针常量,保存的是首个一维数组地址。
一维数组单位是元素,二维数组的单位数字的一维数组,三维数组的单位是二维数组

三维数组输出
#include <stdio.h>
#include “stdio.h"void print1(char *ptr)
{
printf(”%s\n", ptr);
}
void print2(char (*ktr)[100])
{
for(int i = 0; i < 2; i++)
{
printf("%s\n", *(ktr + i));
}
void print3(char (*str)[2][100])
{
for(int i = 0; i < 2; i++)
for(int j = 0; j < 2; j++)
{
printf("%s\n", str[i][j]);
}
void print4(char **ytr)
{
for(int i = 0; i < 3; i++)
{
printf("%s\n", *(ytr + i));
}
int main()
{
char ptr[100] = “hello”; char ktr[2][100] = {“hello1”, “hello2”};
char str[2][2][100] = {{“hello3”, “hello4”}, {“hello5”, “hello6”}};
char *ytr[3] = {“hello7”, “hello8”, “hello9”}; print1(ptr);
print2(ktr);
print3(str);
print4(ytr);
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: