自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (2)
  • 收藏
  • 关注

转载 stderr和stdout详细解说

今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣。 int fprintf(FILE *stream,char *format,[argument]); 在此之前先区分一下:printf,sprintf,fprintf。 1,printf就是标准输出,在屏幕上打印出一段字符串来。 2,sprintf就是把格式化的数据写入到某个字符串中。返回值字符串的长度。 3,f

2017-12-19 23:16:40 1234

转载 12个有趣的C语言面试题及答案

1.gets()函数 问:请找出下面代码里的问题: #include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0;

2017-09-19 21:09:49 862

原创 进程有一个全局变量i,还有有两个线程。i++在两个线程里边分别执行100次,能得到的最大值和最小值分别是多少?

i++不是原子操作,也就是说,它不是单独一条指令,而是3条指令: 1、从内存中把i的值取出来放到CPU的寄存器中 2、CPU寄存器的值+1 3、把CPU寄存器的值写回内存 多核CPU最小值为2,最大值200 i++是由3条指令构成的运算操作,两个线程在i变量上共计需要执行100(次循环)*3(条指令)*2(个线程)=600条指令,这600条指令在某种排

2017-09-15 13:38:30 4276

转载 C++中可以在构造函数中调用另一个构造函数吗?

题目如下:问下列代码的打印结果为0吗? [cpp] view plain copy #include    #include    using namespace std;      struct CLS   {       int m_i;       CLS( int i ) : m_i(i){}       CLS()    

2017-09-15 10:16:16 4687

转载 C++拷贝构造函数(深拷贝,浅拷贝)

对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=88; int b=a;  而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。  #include iostream> using namespace std; class CExample { private:      int a; pub

2017-09-14 16:27:39 433

转载 如何创建一个类只能在堆(栈)上建立对象

在C++中,类对象的建立方式有两种,一种是静态建立类对象,如A a;另一种是动态建立类对象,如A* p = new A; 这两种方式是有区别的:     静态建立类对象:是指全局对象,静态对象,以及分配在栈区域内的对象,编译器对它们的内存分配是在编译阶段就完成的,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类

2017-09-12 16:19:51 1053

转载 C++中cout,cerr,clog的区别

C++标准库定义了4个IO对象,cin,cout,cerr,clog .cin 为标准输入,cout,cerr,clog都是输出流对象,三者有什么区别呢? cout 与cerr的主要区别是cout的输出信息可以被重定向,而cerr则只能输出到标准输出(显示器)上。  例如下面程序编译后生成test.exe      //     test.cpp      #inclu

2017-09-12 10:39:21 822 1

转载 C/C++ 复杂的声明

入门阶段,看见类似void * (*(*fp1)(int))[10];的复杂声明,晕乎。直接略过,这种复杂的东东,不应该是入门者需要去学习的知识。 进阶阶段,这种知识就必需得搞得清清楚楚了,不然还等到高阶阶段才学习这个么? 现在,就来带大家了解一下,这类复杂的声明怎么解? 在解之前,先看一个入门的知识点,指针函数作为参数传递。 [html] vi

2017-09-07 20:55:09 1028

转载 thread join和detach区别

在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。         线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况

2017-09-05 17:28:51 810

转载 add-apt-repository PPA(转)

add-apt-repository 是由 Python-software-properties 这个工具包提供的,只有ubuntu 0910之后版本支持。可以把命令源添加到/etc/apt/sources.list中。   # 我们先了解一下 PPA 的定义: PPA 全称为 Personal Package Archives(个人软件包档案),是 Ubuntu Launchpa

2017-08-27 21:33:03 1259

原创 Ubuntu 16.04 安装可视化数据库浏览器 SQLite Browser 3.8

SQLite Browser是可视化数据库浏览器浏览器,用于创建,设计和编辑数据库文件,是SQLite兼容的可视化工具。界面简单干净,完全免费! SQLite Database Browser可以管理所有iphone数据,基于 Qt 库开发,主要是为非技术用户创建、修改和编辑 SQLite 数据库的工具,使用向导方式实现。用来处理SQLite3数据库文件的应用程序,它能够打开sqlite3数

2017-08-27 21:25:16 3489

转载 关于VMware下安装VMware tools,安装文件没有出现问题的解决

VMware tools是为使用VMware提供了很大的便利。所以安装VMware tools很必要。 由于实验需要,我需要安装在VMware下安装两个操作系统(为Linux系统,使用Ubuntu)。顺利安装好第一个以后,我在为第二个ubuntu安装VMware tools遇到了一个问题,那就是我点击了:虚拟机->安装VMware tools,CD/DVD中会加载VMware

2017-08-27 17:29:09 5544

原创 Your display is too small to run Menuconfig!

在终端窗口执行编译内核时,要保证窗口的大小,如果窗口过小,则会显示如下错误信息 Your display is too small to run Menuconfig! 把你的终端最大化就行了。

2017-08-11 23:28:52 2088 1

转载 64位ubuntu14.04安装交叉编译器arm-linux-gcc出现没有那个文件或目录

这是因为电脑是64位的,装的ubuntu是64位的操作系统。而你下载的arm-Linux-gcc是32位的程序。需要安装一个32位的支持库。 解决方法:输入命令sudo apt-get install libx32z1-dev

2017-08-11 13:29:32 2178

原创 MySQL的数据库和数据表的简单操作

MySQL的数据库和数据表的简单操作,用户注册、修改权限、数据库和数据表的创建、修改和删除的语句。 [cpp] view plain copy /***************************用户**********************************/       select user();               

2017-08-07 00:04:23 474

转载 S3C2451嵌入式简介

嵌入式系统简介 IEEE定义:   嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为devices used to control, monitor, orassist the operation of equipment, machinery or plants)。   可以看出此定义是从应用上考虑的,嵌入式系统是软件和硬件的综合体,还可以涵盖机电等附属装置 一

2017-08-06 23:59:33 1529

转载 STM32之启动文件理解

原文地址:STM32之启动文件理解一作者:Roberl      在嵌入式应用程序开发过程里,由于使用C语言编程,基本很少涉及到机器底层寄存器的执行过程,一般都会直接在main函数里开始写代码,似乎main成为了理所当然的起点,尽管从C程序的角度来看程序都是直接从main函数开始执行。然而,MCU上电后,是如何寻找到并执行main函数这一问题却很自然的被忽略了!事实上微控制器是无法从硬件上去

2017-08-06 23:51:09 1252

转载 QWidget,QMainWindow和QDialog的区别

在创建Qt Gui Application时,需要你在QWidget,QMainWindow和QDialog中选择一个Base Class。但是这三个类具体都有些什么作用,而且彼此之间都有什么区别并不知道,所以上网搜了搜资料,下面是官方手册的内容:       QWidget Class Reference       The QWidget class is the base cla

2017-08-06 00:02:11 503

原创 Qt编程——信号与槽机制

最近开始学习Qt,Qt 是一个跨平台的C++应用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入式系统等。也就是说,Qt 可以同时支持桌面应用程序开发、嵌入式开发和移动开发,覆盖了现有的所有主流平台。你只需要编写一次代码,发布到不同平台前重新编译即可。 Qt 不仅仅是一个GUI库,它除了可以创建漂亮的界面,还有很多其他组件,

2017-08-05 23:58:58 606

原创 shell知识点

(1)$ cat file 文件內容会被洗掉           $ cat  file 此处会没有内容          > file 会先清空 file,然後才读进         因此再重定位读进file的为空         最后cat显示的file为空; (2)stdout、stderr 的管道先准备好才会从 stdin读内容 (3)用于请求后

2017-08-05 23:50:30 487

转载 文件编程

在进行文件编程前,我想介绍下linux上的文件的一些概述,具体如下所示: 我们知道操作系统的五大供能之一就是对文件的管理. 那么为什么要引入文件管理的功能呢,它的主要任务是什么呢? 在现代操作系统中,要利用大量的程序和数据,由于内存容量有限,且不能长期保存,于是人们想出了把这些数据以文件的形式放在外存中,需要的时候再将它们调入内存-----从此就有了文件系统。它负责管理在

2017-08-05 23:47:24 557

原创 文件拷贝

#include #include int main() { FILE *file_in = fopen("bb.c", "r+"); if (file_in == NULL) { perror("fopen bb.c"); return 0; } FILE *file_out = fopen("bbb.c", "w+"); if (file_out == NULL)

2017-08-05 23:42:58 372

转载 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.

1.孤儿进程   如果父进程先退出,子进程还没退出那么子进程将被 托孤给init进程,这是子进程的父进程就是init进程(1号进程).其实还是很好理解的.    #include #include #include #include #include string.h> #include #include #include int main(void) {

2017-08-04 21:49:28 478

原创 Linux进程之死锁

所谓死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 死锁产生的原因: (1) 因为系统资源不足。   (2) 进程运行推进的顺序不合适。   (3) 资源分配不当等。  如果系统资源充足,进程的资源请求都能够得

2017-08-04 16:41:33 729

转载 MakeFile 文件的作用

makefile文件保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件,可执行文件要求包含的目标文件模块及库等).创建程序(make程序)首先读取makefile文件,然后再激活编译器,汇编器,资源编译器和连接器以便产生最后的输出,最后输出并生成的通常是可执行文件.创建程序利用内置的推理规则来激活编译器,以便通过对特定CPP文件的编译来产生特定的OBJ文件

2017-07-26 09:45:57 944

原创 有符号变量与无符号变量的值的转换

#include char getChar (int x,int y) { char c; unsigned int a = x; (a+y > 10) ? (c = 1): (c = 2); return c; } int main (void) { char c1 = getChar(7,4); char c2 = getChar(7,-7); char c3 =

2017-07-22 23:55:07 1950

转载 由于MDK5.0A没有STM32F103程序错误 stm32f10x.h(298): error: #67: expected a "}"

由于MDK4.72A没有STM32F030,所以升级到了MDK5.0 我的程序在MDK4.72A下编译正常没有任何错误,升级软件后程序都出现了同样的问题,请大家帮我看看,这个是什么原因。 Build target '103RE_安卓_Print1' compiling main.c... .\Source\Libraries\CMSIS\CM3\DeviceSupport\

2017-06-04 00:41:58 3459 1

转载 STM32 大小容量芯片之间的差别及启动文件的选择

本文主要讨论STM32F103xC,STM32F103xD和STM32F103xE大容量增强型芯片的特性: 1)何为大容量芯片呢? 答:高达512K字节的闪存和64K字节的SRAM的芯片为大容量。 2)STM32有分小容量,中等容量和大容量的型号,区别呢?       因为STM32F103xx是一个完整的系列,其成员之间是完全地脚对脚兼容,软件和功能上也兼容。在参考手册中

2017-06-03 22:10:08 7811

转载 #ifdef,#else,#endif,#if用法详解

#ifdef,#else,#endif,#if用法详解 预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。 关于预处理命令中的文件包含(#i nclude),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译

2017-05-12 15:58:42 674

转载 Qt之Tab键切换焦点顺序

转自:http://blog.youkuaiyun.com/liang19890820 简介 Qt的窗口部件按用户的习惯来处理键盘焦点。也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件。 焦点获取方式比较多,例如:鼠标点击、Tab键切换、快捷键、鼠标滚轮等。 习惯性的,我们经常会使用Tab键来控制焦点顺序,比如:用户注册时,个人信息输入框焦点的切换、执行按钮焦

2017-03-21 22:59:08 1482

转载 "\r"、"\n"、“回车键”,三者的关系与区别?

\n是换行,英文是New line,表示使光标到行首 \r是回车,英文是Carriage return,表示使光标下移一格 \r\n表示回车换行 我们在平时使用电脑时,已经习惯了回车和换行一次搞定,敲一个回车键,即是回车,又是换行。   1、\n 软回车: 在Windows 中表示换行且回到下一行的最开始位置。相当于Mac OS 里的 \r 的效果。 在Lin

2017-02-10 15:53:57 11525 1

转载 关于【error C3646: 未知重写说明符】的若干种可能性

如果在程序中出现了error C3646,那么这个错误可能是由多种问题所导致的,这篇文章将对多种错误及对应解决方法进行分析。 在MSDN的官方网站中,Complier Error C3646的定义为unknown override specifier,并且其解释为The compiler found a token in the position where it expecte

2017-02-09 22:11:12 8151

原创 C++学习第四课

1.this指针    当前的对象,在类的内部访问成员使用,pubic,protected,private;    只能在非静态成员函数内部使用;      2. static 在C++中     static在类的内部修饰变量,对象是共享使用,在类内声明,在类外定义;      类型  类名::变量名 = 数值;          在类内声明的时候前面加static,在类外初始化

2017-01-22 22:11:23 492

原创 类的继承

建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle,求出面积并获取相关信息。具体要求如下: (1)形状类Shape (a)保护数据成员 double x,y:对于不同的形状,x和y表示不同的含义,如对于圆,x和y均表示圆的半径,而对于矩形,x表示矩形的长,y表示矩形的宽。访问权限定义为保护类型是为了能被继承下去,以便派生类能直接访问x和y。 (b)公有成员函

2017-01-21 21:45:14 498

原创 C++学习第三课

1.构造函数:  名字和类名相同,没有返回值,也不需要显式调用,在创建对象的时候自动执行。---专门用来初始化对象的; 2.访问权限:在类的内部,无论public,protect,private,都可以互相访问;没有限制;     在类的外部,只能是通过对象访问public的成员,不能访问private,protected成员;通过类的内部public的函数访问private;     

2017-01-20 21:38:25 464

原创 C++学习第二课

一、什么是堆?什么是栈?堆和栈的区别是什么?   栈:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。   堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回 收。用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。   //main.cpp 

2017-01-19 15:25:49 423

原创 C++学习第一课

一、什么叫做面向对象?   面向对象就是把数据及对数据的操作方法放在一起,作为一个相互依存的整体--------对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。   面向过程就是自顶向下顺序执行,逐步求精;其程序结构是按功能划分为若干个基本模块,这些模块形成一

2017-01-18 21:48:38 520

转载 C++动态分配

设定义一个类: class ListArray { private: int size; //整型数组的大小,表示可放元素的个数 int elem; //整型数组当前的元素个数,初始应为0,当elem等于size时,数组满 int *p; //指向整型数组,动态分配内存空间 public: ListArray(int s=100); //用s初始化整型数组的大小 void put

2017-01-17 16:14:41 745

转载 C++格式化输出,C++输出格式控制

在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式输出一个 整数,对输出的小数只保留两位小数等。有两种方法可以达到此目的。一种是我们已经介绍过的使用控制符的方法(详情请查看:C++输入cout与输出cin);第2种是使用流对象的有关成员函数。分别叙述如下。 使用控制符控制输出格式 控制格式的使用方

2017-01-17 13:33:54 706

转载 如何判断电脑CPU大小端

电脑的cpu有两种,大端和小端cpu。 大端cpu: 所谓的大端,是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 小端: 所谓的小端,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合

2017-01-03 21:24:30 1820

网络之路H3C数通技术23期汇总.zip

网络之路H3C数通技术23期汇总,最新版

2019-07-19

1602资料.rar

1602液晶屏资料,

2019-10-29

空空如也

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

TA关注的人

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