嵌入式小白学习笔记20180911-0925

20180911

递归函数:一个函数又调用了自身。

图灵定律(自己了解):任何一个可计算的步骤都可以被重复完成

Main函数中不要写static,占用堆空间,且main函数中的值本来就存在于整个函数周期中。

Malloc出的地址,在堆里。

 

函数向外输出:

1.return输出

2.指针

要是想修改一个变量,务必要传递变量的指针。

指针一定要初始化(否则可能为别的随机值)

Void  *funcint a,int *x,void **px

{

Int b=a+1;

*x=b;

Return 0;

}

 

Int main(int argc,const char *argv[])

{

Int k = 0;

Func(2,&k,NULL);

Printf(k);

Return 0;

}

k地址传参

 

一维指针

Int *m=Null

*m地址:&m

二维指针

Int **m=Null

**m地址:&m

 

取任意多次*都是有意义的,但是取1次以上&就无意义。地址永远是一维的,指针可以二维可以多维。

在一维情况下,指针可以和地址相等价。

 

 

 

20180917

Memset():三个入参,第一个是指针,第二个是value,第三个是大小。把一块内存块,设定成值。(可以理解为初始化)

~:取反

!:取非

例:0x020000 0010

取反:0xF1111 1101

取非:0

技巧:写truefalse时,先定义falsefalse0

 

不要写if(a == 1),要写成if(1 == a)。因为如果只写了一个=,前者不报错,后者会报错。或者写NULL == a

示例:149行错误,153行正确

 

 

20180921

Build文件夹:编译器中的内容,若手动编译,不需要这个文件夹

.txt:编译脚本,由Cmake编译系统解释

.kdv4kde4生成的相关工程文件。若删除,使用kde打开又会重新生成

Cmake:通用的编译生成工具

Cat ./main.cpp:在命令行中显示所有代码。

Nano ./main.cpp:命令行中的文本编辑器。可以直接在命令行中编辑代码

F1-F7:同一时刻7个不同的用户,f7默认是图形化界面

登录使用ctrl+fn+alt+F1

tty:多个控制台,相互独立,可以登录同一个账号

 

Vi ./main.cpp:刚进入时,代码是只读模式。按“i”(或是直接按“insert”),即可进入编辑模式

当操作时,按“esc”,insert消失。然后按“:,再加“q!”,然后敲回车即可

vi ./main.c”新建一个文件

esc”之后,输入“:x”,保存写的文件(若写成大写X,表示文件加密,需要设定密码)

gcc -o test(test为编译的文件名,不是代码的文件名,不需要加后缀)

gcc -g -o ./test ./main.c生成可编译文件

 

gdb

打断点:b main.c:10 //(b表示break,然后是文件名,然后是行号)

然后输入l,回车,即可看到断点那行的代码。

输入r,即可运行,并停在那一行。

单步调试:输入n//(意为next)

直接敲回车:执行上一次的命令,如上一次是n,此次执行的也是n

S:单步进入单步调试

P:display的简写

代码必须要先编译再调试。

 

 

关键字:

1.ELF

2.Linux下的多tty操作。

3.开源软件与开源软件的许可证

4.printf的缓冲区和/r/n的关系。

5.valgrind(工具)

6.了解关键字Volatile(后期还会说)(aba问题的解决)

SSL的中间人破解

SSL:不对称加密

 

 

1.ELF二进制文件,用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。

2.tty时多用户切换

 

3.开源软件许可证:

 

详细参考:http://www.ha97.com/833.html

 

4.printf和缓冲区及\r\n

   默认情况下,printf()的输出是缓冲的,如果没有换行符,不会立即输出到标准输出。

printf是一个行缓冲函数,先写到缓冲区,满足条件后,才将缓冲区刷到对应文件中,刷缓冲区的条件如下:

    1 缓冲区填满

    2 写入的字符中有‘\n’ '\r'

    3 调用fflush手动刷新缓冲区

    4 调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷

满足上面4个条件之一缓冲区就会刷新,,也就是printf会真正调用write来写入。

当我们执行printf的进程或者线程结束的时候会主动调用flush来刷新缓冲区,所以程序结束,也会刷新。

 

20180925

脚本:

#!/bin/bash

Gcc -o ./test1 ./main.c

 

权限:文件安全性 使用chmode

 

Makefile中:

冒号左边为目标,右边为依赖(有的目标为没有依赖的,称之为“伪目标”)。

当有依赖的函数时(个人理解就是有需要调用的函数),在冒号右边加上该函数所在的文件的文件名。

.PHONY:定义多个伪目标

All:普通的脚本目标

 

-O:优化等级

-O0:优化等级为0,不优化。可以-O1-O2-O3(等级不同)。

-g:将调试信息写入可执行程序

 

关键字:

1.文件的权限问题:

 

使用ll,显示的结果信息 , 一行是一个目录或者一个文件 , 每行用空格分隔为七列。

第一列是权限信息 : 这部分的类似于 drwxr-xr-x 可以分为四部分 :

第一个字符是表示文件类型 , 可以为以下几种类型:

- 文件 , b 存储设备 (如硬盘) , d 目录 , c 串口设备 (如键盘 , 鼠标) , l 链接文件

剩下的 9 个字符 , 可以平均分为三组 , 每组三个字符,字符由 rwx- 四个字符组成 , 分别代表是否有读取 , 写入 , 执行 , 无任何权限 ;

第一组定义了文件所有者对文件所拥有的权限

第二组为同用户组的用户对文件所拥有的权限

第三组为其他组用户对文件所拥有的权限

 

修改文件权限的符号类型:

参考资料:https://blog.csdn.net/zsx157326/article/details/78665960

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值