C
铁头娃帆船
就是干!
展开
-
C++调用自己写的动态库会崩溃 std:: vector
写了一个C++动态库,在调用的时候会发生崩溃,经过一番定位,原因是动态库是Release版本,且接口函数含有std::vector,而调用动态库的程序是Debug版本。1、对应好版本,Release程序使用Release的库,Debug程序使用Debug的库。2、库的接口函数不使用标准库的容器,这样就版本就可以混用了。Debug和Release版本的标准库容器内存大小不一样。原创 2023-02-25 17:34:10 · 952 阅读 · 0 评论 -
C++ error C2143: 语法错误,缺少“;“(在”<“的前面)
折腾一会后发现是Point没有加命名空间,而error C2143: 语法错误,缺少";"(在”原创 2023-02-25 17:16:49 · 2557 阅读 · 2 评论 -
C++ float类型内存分布 6位有效数字
先转成二进制数(需要小数的二进制表示),移动小数点到最左边的非零数右下脚,然后在指数位记录移动的位数,此时最左边一定是1,所以省略。8388607是十进制的7位数,它不包含大于自己的7位数,所以浮点数的精度保证不到十进制7位,只能保证6位。今天听到浮点数float的前6位有效的说法,一脸懵逼,浮点数占32位空间,为什么只有前6位是有效的?float能表示的最大值:(2-2^(-23)) * (2 ^7-1);最小值:(2^(-23))*(2^(-127))1个符号位(1:复数,0:正数)...原创 2022-08-16 20:42:35 · 1294 阅读 · 0 评论 -
C++菱形继承
菱形继承的形状如下图。原创 2022-08-12 17:40:15 · 277 阅读 · 0 评论 -
C++ 定位new运算符: new (void*) xxx
new(void*) xxx的用法原创 2022-08-03 21:35:08 · 1296 阅读 · 0 评论 -
error: C2632: “int”后面的“bool”非法
过程今天遇到一个错误 error: C2632: “int”后面的“bool”非法, 英文是 'int ’ followed by ‘bool’ is illegal;编辑器定位到某个库函数头文件的一行代码,如下 typedef int BOOL;看着没什么问题。搜了一下C2632这个错误的含义。当2个类型在一起时就会报C2632错误。如下图// C2632.cppint float i; // C2632回到报错代码, 当BOOL是一个基础类型时,便会造成2个类型在一起的现象。原创 2022-01-12 17:24:43 · 2251 阅读 · 1 评论 -
回调函数,回调
首先,明确下概念,回调是一个过程,回调函数是这个过程中的一个函数;再明确一点,回调函数和普通函数没有任何差别,是的,没有任何差别,你想怎么写就怎么写,只要能满足需求。回调的本质:把指向回调函数的指针作为参数传给其他函数,其他函数通过这个指针就能使用回调函数。回调过程涉及3个部分,调用者、使用回调函数的函数、回调函数。...原创 2020-07-31 14:24:01 · 315 阅读 · 0 评论 -
printf,sprintf,snprintf,fprintf
前言:每次遇到这几个函数都要看看怎么用,md还是要整理一下才记得住。printf: 输出格式化数据到 标准输出sprintf: 输出格式化数据到 字符指针指向的字符snprintf: 输出size大小的格式化数据到 字符指针指向的字符fprintf: 输出格式化数据到 文件句柄指向的文件#include <stdio.h>int main(){ char pStr[100]; char pTmp1[] = "hello"; printf("pri原创 2020-07-20 18:23:05 · 148 阅读 · 0 评论 -
C语言字符串指针和字符串数组的区别
C语言里的指针、数组、字符串等等这些东西在我编程入门的时候一直捋不清楚,而为什么捋不清楚,是因为我不知道程序运行时内存是怎么分区的,更不知道这些变量啊、常量啊究竟是放在内存里的什么地方。所以说,想清晰地认识指针和数组的区别,得先了解一下程序运行时内存的分区、变量存放位置。C语言程序运行时的内存分为以下5个区,详细可看这篇博客: http://blog.csdn.net/shulianghan/article/details/20472269栈区 (stack) : 存放内容 : 局部变量, 参数;堆区原创 2020-06-14 18:58:47 · 2043 阅读 · 1 评论 -
使用补码的好处
布布君:使用补码的好处是什么?小甲鱼:你应该先问补码是什么……布布君:补码是什么?小甲鱼:一个数在计算机中是以二进制的形式存放的,补码的发明是为了表示带符号数(整型)。布布君:我知道二进制左边的第一位叫“符号位”,用“0”表示正数,用“1”表示负数,也就是说十进制数 3 的二进制表示方式是 00000011(1个字节),而 -3 则可以表示为 10000011,对吗?小甲鱼:对一半,不对...转载 2019-03-12 08:45:54 · 4876 阅读 · 4 评论 -
字符数组和字符串指针的一点区别
一下2个定义有很大的差别char array[] = “I love you.”;char *pointer = “I love you.”;array是一个刚好够存放初始化字符串内容和空字符‘\0’的一维数组数组存放在动态存储区,数组中的单个字符可以修改但array始终指向同一个存储位置,不能改变pointer是一个指针,其初值指向一个字符串常量字符串常量存放在静态存储区,如果试图...原创 2018-11-30 12:24:14 · 414 阅读 · 2 评论 -
大端模式和小端模式
一、什么是大小端对于0x12345671)大端模式:Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。低地址 --------------------&gt; 高地址0x12 | 0x34 | 0x56 | 0x782)小端模式:Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。低地址 -------...转载 2018-11-26 18:09:56 · 130 阅读 · 0 评论 -
stdarg.h 的使用 函数可变参数
全称:standard arguments 成员: va_list :用来定义va变量,如va_list va。 va_start():使用方法:va_start(va,n) 其中va为va_list 定义的变量,n为参数个数。 va_arg() :使用方法:va_arg(va,type) 其中va为va_list 定义的变量,typ...原创 2018-09-01 13:09:44 · 232 阅读 · 0 评论 -
C语言的位操作
C语言的位操作转载自https://www.cnblogs.com/nibuyaoni/p/5547795.htmlc语言的位操作最常用的地方就是用在对寄存器的写值上。1.位与:&操作:1 & 1 = 1; 1 & 0 = 0; 0 & 0 = 0;特点:只有全是1的时候才是1,其他情况都是0.总结:任何数和0位与就是0,和1位与没有变化,所以位与常...转载 2018-10-16 10:46:21 · 199 阅读 · 0 评论 -
记录一些嵌入式笔试要点
一、字符数组、字符串、字符串指针的区别,以及sizeof和strlen的区别1、sizeof(字符串)有包含‘\0’,而strlen(字符串)不包含'\0'。2、sizeof()对这3种定义的区别在下面的小代码中。3、strlen()对这3种定义的结果都是一样的。代码如下:#include&amp;amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;amp;amp;gt;#include&a原创 2018-11-20 16:18:30 · 199 阅读 · 0 评论 -
我的单链表的基本操作_C语言
以下是带有头节点的单链表基本操作#include&amp;amp;lt;stdio.h&amp;amp;gt;#include&amp;amp;lt;malloc.h&amp;amp;gt;#define OK 1#define ERROR -1typedef int Elem;typedef int Status;/节点结构/typedef struct Node{Elem data;struct原创 2018-11-17 13:52:53 · 160 阅读 · 0 评论 -
记今天在运行程序时出现的segmentation fault(core dumped)
刚刚在复习数据结构的时候写了一些单链表的操作,运行的时候出现segmentation fault(core dumped) 一番查错后发现原来在写初始化链表的时候形参少加了一级指针,修改完后可以正常运行,以为这就是造成segmentation fault 的原因。过了一会想到我之前也有犯过少加一级指针这种错误,但是怎么没遇到过segmentation fault?经过一番搜索和测试,最终发现...原创 2018-11-08 13:37:46 · 5292 阅读 · 0 评论 -
linux编程之pipe()函数
转自:https://www.cnblogs.com/kunhu/p/3608109.html转载 2018-11-21 11:12:01 · 3151 阅读 · 0 评论 -
int main(int argc,char* argv[])详解
挺久之前就了解过int main()带参数的形式,但现在已经忘光了,重新学习一下,顺便记录,时不时可以来翻翻,哈哈argc是命令行总的参数个数argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数,比如:#include<stdio.h>int main(int argc, char *argv[]){ int i; print...原创 2018-11-21 12:59:51 · 5309 阅读 · 0 评论 -
互斥锁mutex简单应用
写了段小代码学习互斥锁的作用。互斥锁的作用:在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。思路是用2个线程对同一个内存位置buffer,进行写和读,为了防止2个线程同时对buffer进行修改,所以用同一把互斥锁来限制。写操作简化为把buffer修改为’W’,读简化为把buffer修改为’R’。在对buffer进行修改之前用pthread_mutex_lock()进行加锁,修...原创 2018-11-20 11:26:56 · 507 阅读 · 0 评论 -
static的作用_C语言
**转自:**https://blog.csdn.net/newcong0123/article/details/52725595在C语言中static的作用如下第一、static在修饰局部变量的时候,只执行一次,并且延长了局部变量的生命周期,程序运行结束才释放。static局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0.第二、 static修饰全局变量的时候,这个全局变量...转载 2018-12-02 11:31:15 · 183 阅读 · 0 评论 -
指向函数的指针_函数指针(function pointer)
**一部分转自https://blog.csdn.net/str999_cn/article/details/78591369代码跟小甲鱼老师讲课时基本一样**函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码。一个函数的地址是该函数的进入点,也是调用函数的地址。函数的调用可以通过函数名,也可以通过指向函数的指针来调用。*函数指针还允许将函数作为变元传递给其他...转载 2018-12-02 13:11:40 · 6261 阅读 · 0 评论 -
文件操作函数read、write、creat、open、close、unlink详解
Linux系统把很多外围设备都看成是文件,比如IO设备。任何时候对文件的输入/输出都是通过文件描述符标识文件。因为大多数的输入/输出设备是通过键盘和显示器来实现的,为了方便起见,依次把标准输入、标准输出、标准错误的标识符定为0、1、2。今天来学几个文件操作。输入与输出是通过read和write系统调用实现的。这两个函数中,第一个参数是文件描述符,第二个参数是程序中存放读或写的数据的字符数组...原创 2018-11-29 17:21:31 · 1193 阅读 · 0 评论 -
函数的参数和指针
每个函数变量的作用域只限于各自的作用域中, 不同函数之间的变量不能随意访问。 通过指针可以确定变量的地址,从而可以访问到其他函数变量域的变量。void swap0(int x, int y) { int temp; temp = x; x = y; y = temp; }void swap1(int *x, int *y) { in...原创 2018-09-01 10:56:41 · 149 阅读 · 0 评论