自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 填坑linux pthread_cancel

问题:明明设置的state为disable但是pthread_cancel函数还是返回0,即…自己的理解错了,原以为进程必须中断才叫cancel成功,其实是只要发送成功就叫cancel成功,如果讲新进程中的sleep函数注释掉,那么进程就会在cancel函数调用之前结束,所以也就是返回cancel失败了。...

2019-07-22 17:45:20 163

原创 函数返回地址类型概述

上面这个程序运行后结果出现段错误,因为buf存在于栈空间,随着函数返回也随之被回收,所以p实际上指向的是个不存在的空间.

2019-07-16 16:19:12 1055

原创 嵌入式非字符空间(数据空间)的操作

无论是字符空间还是非字符空间的操作,注意两点,首地址和结束标志,字符空间的结束标志是0(while循环来访问)非字符空间(数据空间)为数据的大小(for循环来访问)上图memcpy就是数据空间的标准定义格式...

2019-07-16 10:20:24 170

原创 在嵌入式工程中结构体传参的方式选择

## 如果用值传递,那么如果结构体很大无疑会会造成空间的浪费,在main函数和fun函数内部分别开辟空间,##地址传参的方式可以节省空间所有建议采用地址传参的方式...

2019-07-15 11:01:10 214

原创 函数型指针数组的理解

上图中就是定义了一个指针数组,这个指针数组里边存放的是函数的地址,p首先与[7]结合构成一个数组,然后向左看结合为指针数组,最后看访问方式为函数....

2019-07-15 10:02:43 104

原创 函数内部statci修饰的局部变量与全局变量的区别

由上图可以看出两个问题, 第一static修饰的局部变量,虽然不会随着函数的结束而被释放,但是也是未定义的,不能直接引用 ,第二不加static的局部变量bss区域为8个字节,加上之后变为4个,而data区加了4....

2019-07-14 21:41:23 163

原创 二维数组名的指针保存

int (星p)[5] 的意思首先编译器看到p和*结合,然后类比与int a[5],p的读的方式就变成了一次读5个int型的数据,int星p[5]的意思首先编译器将p和[5]结合在一起,认为这是一个数组,然后数组里面存放的都是int星类型的数据,读的方式也就是int星,C语言的编译器一般来说是贪心算法,由前往后读,前边的数据类型会默默记载小笨笨上,遇到标签/变量名,之后开始编译,看看标签后...

2019-07-14 17:19:08 207

原创 嵌入式工程中对采集数据的拷贝处理memcpy

上图中strncpy是不能使用的,因为当采集的数据刚开始是00 00 00 12 23 时 strncpy 遇到00就停止拷贝了,即使指定了只拷贝10个字节.用strcpy就更不行了,因为没有指定拷贝的个数,可能会存在越界以及内存泄露的情况....

2019-07-14 16:30:57 247

原创 char 与unsigned char在嵌入式开发中的区别

嵌入式中数据采集的最小单位为8bit或者8bit的倍数,在嵌入式中char buf[ ]指的就是字符串,也就是所谓的字符空间,转换成ascii码是有符号数unsigned char buf[ ]指的是非字符空间,例如传感器采集的数据,一般为无符号数...

2019-07-14 16:25:52 502

原创 数组和指针赋值的区别

区别1 .对数组赋值实质上是将内存上的abc字符串一个一个的复制到数组buf里面,之后你就可以对数组里面的字符进行赋值操作2 .p指向的是内存上的abc字符串的首地址,因为abc是在内存上的常亮,所以不能通过上图指针的方式对abc进行赋值操作,共同点赋值号的右边的字符串abc的性质是相同的,都是在内存上开辟的空间,并且都不能被改变,...

2019-07-14 10:16:40 1525

原创 函数指针的两种模型

2019-07-03 18:07:17 153

翻译 宏与声明

2019-07-03 14:42:52 350

翻译 全局变量和静态本地变量(static)

静态本地变量实际上是全局变量。静态本地变量:全局生存期,本地作用域本地变量 :本地生存期,本地作用域全局变量 :全局生存期,全局作用域返回一个本地变量的地址是一件危险的事情,当函数调用结束后本地变量i就会被回收,其地址会被分配给新的本地变量。...

2019-07-03 09:54:50 1081

翻译 联合union

在这里插入图片描述

2019-07-02 19:01:12 191

转载 结构与函数,typedef,

2019-07-02 17:14:23 101

原创 c语言枚举

2019-07-01 21:13:08 103

原创 C语言字符串数组,函数strlen,strcmp,strcpy

如何实现strlen的功能呢注意的几点:如果知道数组的大小用for循环,不知道用while循环,每个字符串后边都有一个反斜杠0(\0),通过它我们可以判断数组的大下。...

2019-07-01 20:06:18 1285

原创 字符串数组

2019-06-27 21:18:09 124

原创 单字符输入输出

EOF为一个宏 end of file

2019-06-27 21:11:39 187

原创 动态内存分配

做两件事,第一对p进行赋值,第二将p的值作为判断while的条件。

2019-06-27 20:45:09 100

原创 指针运算

对一个指针加一实质上就是对指针加了一个sizeof(int /char/…)

2019-06-27 20:18:16 82

原创 指针与数组:为甚麽数组传进函数后的sizeof不对了

这里的a[]实质上就是一个指针a ,改成a之后程序仍然能够运行

2019-06-26 21:31:18 204

原创 指针与const

只有两种意思:一种是指针不可修改,另一种是通过指针不可修改,所以说不论哪种都是可以对i进行赋值的。一行二行是通过指针不可修改,三行是指针不可修改。...

2019-06-26 21:03:21 106

原创 STL之为甚麽要自己去造轮子(标准模板库(英文:Standard Template Library))

vector是一个模板 所以说x是一个对象,这个对象是用vector的那个模板做出来的,可以放int 的一个vector。

2019-06-26 20:50:42 229

原创 stream流

流的特点:一维单方向。endl;是一个操作器操纵子

2019-06-26 19:58:48 78

原创 异常

有且仅有new出来的东西会在堆里全局数据区:全局变量,静态本地变量,静态成员变量。堆栈:本地变量,函数内部产生的对象按照书写顺序,每条验证是否满足三个条件的其中一个,如满足则不再继续往下执行。本条说明警告那些调用abc的人如果要调用我那么你要对MathErr做出处理。...

2019-06-26 19:14:48 76

原创 模板template

2019-06-25 21:32:06 80

原创 运算符重载函数

2019-06-25 17:27:03 135

原创 面向对象拷贝构造和static

1f函数返回的是一个对象所以可以作为左值;g函数返回的是一个值不能作为左值;private的限制是对类而不是对象,所以你访问另外一个同类的对象的配private是可以的。初始化和赋值关于等号"="的争论;初始化之能被执行一次,执行完初始化之后的操作都叫赋值2 static 部分static在c 中有两种不同含义,第一种表示这种存储是持久存储的。第二层说他的访问性受局限的。s...

2019-06-24 16:26:30 96

原创 多态的实现

eclipse 自己的vtable;动态链接的实质是p->的eclipse的地址,从而得到vtable表,根据vtable表p+2得到eclipse自己的render函数;

2019-06-23 16:01:30 135

原创 c++面向对象引用

Y是X的另外一个名字,当给Y赋值的时候其实是给X赋值。Z是X的别名,加上const 表示通过Z无法修改X,Z不能作为左值,但是你可以去该X.在f里边该x,外边的y就改变了。很邪恶h()函数的返回类型为引用reference,程序运行到h()=16的时候,h()函数返回的x的reference来赋值为16,...

2019-06-23 10:10:31 265

原创 c++面向对象const

第二行p是const p++可以,p所指向的内容不可变第三行对象是const第四行p is const p++不可以,p 所指向的是person类总结const 写在的前面对象是const写在*的后面指针是consthello world 在代码段不可写;char s[ ]=“hello world”:将helloworld代码段放在堆里整个对象里边的值是cons...

2019-06-23 09:31:20 166

转载 day08

2019-06-22 21:55:34 61

转载 c++const与static

1for (i=0,p = s;i<3;i++,p++)//注意逗号和分号的使用,同一类别之间用逗号https://baike.baidu.com/item/const/1036https://www.runoob.com/w3cnote/cpp-const-keyword.htmlconst 关键字不能与 static 关键字同时使用,因为 static 关键字修饰静态成员函数,...

2019-06-22 19:52:04 278

原创 day07之面向对象编程

1C++ 重载运算符和重载函数C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称...

2019-06-21 17:47:12 90

原创 linux从入门到放弃day06之面向对象编程

0闲来无事做,趁着下载东西就先写一下计划吧目前C语言的基础知识已经学完了,开始了c++的oop之路,接下来还学要学习的有数据结构,linux下的C语言操作,linux的一大堆堆堆东西,还有arm。数据结构和arm以及stm32之前是已经学过了的,还要熟悉一下eclipse编辑器,之前还学过Java,python不过这些连入门都不算,都是老师上课教的,自己也没有怎末好好学,就是考试过了,讲到面向...

2019-06-19 21:33:21 175

原创 linux从入门到放弃day05

1进程的地址空间:堆与栈一样,堆用于运行时内存分配;但不同的是,堆用于存储那些生存期与函数调用无关的数据。大部分语言都提供了堆管理功能。在C语言中,堆分配的接口是malloc()函数。一个正常的程序在内存中通常分为程序段、数据端、堆栈三部分。程序段里放着程序的机器码、只读数据,这个段通常是只读,对它的写操作是非法的。数据段放的是程序中的静态数据。动态数据则通过堆栈来存放。在内存中,它们的...

2019-06-17 21:28:24 91

原创 linux从入门到放弃day04

1#include <stdio.h>#include <stdlib.h>int main(){enum color { red=1, green, blue };enum color favorite_color;/* ask user to choose color */printf("请输入你喜欢的颜色: (1. red, 2. green, ...

2019-06-16 21:49:55 337 2

原创 linux从入门到放弃day03

1initialization makes integer from pointer without a cast你的初始化是把一个指针类型的对象赋给一个整形变量,而且也没有进行强制类型转换2在Linux系统之中,EOF根本不是一个字符,而是当系统读取到文件结尾,所返回的一个信号值(也就是-1)。至于系统怎么知道文件的结尾,资料上说是通过比较文件的长度。3int a1[][10]={...

2019-06-15 21:51:03 412

原创 day02

11111 0000 8位 一个字节(Byte)=8bit一个float数据占用32bit,double数据占用64bit2浮点型在内存中的存储方式https://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html34C语言中各种数据类型中所占的字节和取值范围https://blog.csdn.net/li...

2019-06-14 23:16:14 367

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除