自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C# 根据控件NAME名字 操作控件

C# 根据控件NAME名字 操作控件现在知道一个字符串“label1”想根据这个“label1”操作窗体内 label1控件的TEXT值答案:string name = "label1";object o = this.GetType().GetField(name, System.Reflection.BindingFlags.NonPublic | System.Reflect...

2018-09-06 15:42:54 8998 1

原创 C# INI文件读取

记录个问题:发现路径字符串中有个@,记录下这个@在C#中的作用:@ 只有一个作用:就是让 "\ " 这个转义符 不起作用,比如 你要输出一个 \ 必须这样写:“\ \”但是 你@“\”即可,这种写法 一般用于 路径...

2018-09-06 10:44:09 1129

原创 C#异常处理

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;/* 抛出异常 * 捕获异常 * * 异常筛选器的作用 */namespace MyApp{ class Program { ...

2018-08-13 19:31:41 286

原创 C#泛型

使用泛型,可以让代码尽可能地得到重复利用,增强通用性,提高程序代码的灵活性与可重用性。 一、泛型与类二、泛型与接口三、泛型与类型成员四、泛型与委托五、泛型约束using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading...

2018-08-13 16:13:22 606

转载 聊聊数据库中的关键字——字段、属性、列、元组、记录、表、主键、外键

学完数据库,我们对SQL SERVER 2008中的部分关键字有了大概的了解,下面我来总结一下几个比较重要的关键字:字段、属性、列、记录(元组)、表、主键、外键。一、字段:某一个事物的一个特征,或者说是属性在我们学vb时,总是用到控件的各种属性,比如name属性、captain属性、width属性等属性。类似,在这里的某一个字段就是对“员工“控件中的属性。二、记录(元组):事物特征的组合,可以描述...

2018-03-26 13:27:29 5164

转载 对傅里叶变换的理解

最近笔者在准备电赛,在小组中负责研究波形的产生与变换,在我做滤波器的时候免不了要去碰到傅里叶这个东西,笔者也很头疼这玩意儿,在网上无意中发现了下面这篇文章,觉得讲的挺有趣,忍不住分享给大家。这篇文章的核心思想就是:要让读者在不看任何数学公式的情况下理解傅里叶分析。傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分

2017-07-30 14:42:22 531

转载 C++中的static关键字

C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:[cpp] view

2017-07-26 10:56:52 193

转载 单例模式三种模式,饿汉、饱汉、双重锁模式,实例及优劣详解

单例模式三种模式,饿汉、饱汉、双重锁模式,实例及优劣详解单例模式是一种很基础的设计模式,在面试时可能会被要求手写不同类型的单例模式代码,主要有三种模式:1、饿汉模式://饿汉模式,很饿很着急,所以类加载时即创建实例对象public class Singleton1 { private static Singleton1 singleton = n

2017-07-25 19:09:01 424

转载 四轴PID讲解

鉴于某些原因,笔者无法修改原先已经发表的部分博客文章,在这里笔者将先前设计的微型四轴工程代码开源,下载地址:github.com/yzhajlydy 正文开始:这篇文章分为三个部分:PID原理普及常用四轴的两种PID算法讲解(单环PID、串级PID)如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱控?PID原理普及1、  对自动控制系统的基本要求

2017-07-23 19:06:02 684

转载 GSM与GPRS的区别

1.    GSM是全球移动通讯系统(Global System for Mobile Communications)的简称 2.    GPRS是通用分组无线业务(General Packet Radio Service)的简称 3.    GPRS是在GSM系统基础上发展起来的分组数据承载和传输业务。 4.    GPRS与GSM系统最根本的区别

2017-07-22 16:19:23 907

原创 C++实现带表头的单链表

我自己尝试写的,我用了两个类,其中一个是节点的类,另一个链表的类。 具体代码如下:LinkNode.h 节点类#ifndef _LINKNODE_H_#define _LINKNODE_H_#include <stdio.h>class LinkNode{public: LinkNode():data_(0),next_(NULL) {} LinkNode(int dat

2017-03-08 20:33:54 2597 1

原创 类模板实现栈

#ifndef _STACK_H_#define _STACK_H_template <typename T>class Stack{public: Stack(int maxSize); ~Stack(); void Push(const T& t); void Pop(); T& Top() const; bool Empty() cons

2017-03-07 23:10:34 418

原创 C++异常处理机制

一.C++异常处理机制的组成部分? try(检查) ,throw(抛出),catch(捕获)。 将需要检查的语句放在try块中,throw用来当出现异常时抛出一个异常信息,而catch则用来捕获异常信息,如果捕捉到了异常信息,就处理它。二.try 1.try块可以嵌套 2.程序按顺序寻找匹配的异常处理器,抛出的异常将被第一个类型符合的异常处理器捕获 3.如果内层try块后面没有找到合适的异

2017-03-06 14:50:47 497

转载 为什么构造函数不能是虚函数?

1,从存储空间角度虚函数对应一个vtable,这大家都知道,每个vtable对应一个vptr,可是这个vptr其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要

2017-03-05 23:18:20 349

原创 数据库demo.c

#include <stdio.h>#include <stdlib.h>#include <sqlite3.h>int handle_result(void *para, int column_count, char **column_value, char **column_name){ printf("para = %s\n",(char *)para); printf(

2017-01-19 23:29:03 347

原创 文件复制代码

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#define MAX_SIZE 1024int read_line(int fd, char *buffer, int

2017-01-18 22:56:07 547

原创 不带缓冲的文件I/O操作

一.操作系统管理的资源? 文件管理,进程管理,设备管理,网络协议栈,内存管理。二.Linux操作系统概述1.Linux操作系统的构成? 用户空间,内核空间2.为什么划分为用户空间,内核空间? 在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间,它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们

2017-01-17 22:38:16 568

原创 无表头单链表一些基本操作

这里主要写了链表的插入(头插,尾插,中间插),删除,遍历操作。#include <stdio.h>struct node{ int num; struct node *next;};typedef struct node Node;typedef struct node * Link;void creat_link(Link *head){ *head = NULL;

2016-12-19 22:52:55 852

原创 位操作运算符

位操作运算符的应用& 1.对特定位清0 mask中的特定位为0,其余位为1。s = s & mask;2.取某数中的指定位 mask特定位置1,其余位0。| 常用来将源操作数某些位置1,其余位不变 mask特定位置为1,其余位为0。^ 1.使特定位取反 mask特定位置1,其余位为0; 2.不引用第三方变量,交换值a = a ^ b;b = a ^ b;a = a ^ b;编程题

2016-12-18 23:03:03 645

原创 函数之传入参数,传出参数

下面的这个例子用来讲解什么是传出参数,什么是传入参数?通过具体的例子帮助大家理解。#include <stdio.h>int func(int num1, int *num2){ *num2 = 5; return num1 + *num2; }int main(){ int num1 = 5; int num2; int result = func(n

2016-12-13 23:04:45 13616

原创 嵌入式开发人员测试题(二)

1、请问以下代码输出结果是什么 int i = 1; void main() { int i = i; }答案: i为main函数里定义的局部变量,是未定义值,所以输出为一个随机值。2、阅读以下程序#include <stdio.h> void swap4(int *p,int *q)void swap1(int p,int q)

2016-12-11 23:04:57 273

原创 LinuxC测试题整理(一)

1. 请描述什么是嵌入式?嵌入式开发的优点有哪些? 答:嵌入式即为在已有的硬件平台上移植操作系统。 优点: ①开发人员无需了解硬件的工作原理 ②提高软件代码的可移植性,从而提高开发效率, 降低开发成本 ③操作系统是个资源库,有很多开源的软件和工具2.嵌入式开发中为什么选择C语言作为开发语言,C语言有哪些缺点? 答:C语言的优点: ①出色的可移植性,可在多种不同体系结构的软/硬件

2016-12-10 21:35:57 915

原创 函数的执行过程

函数执行过程1.通过函数名字找到函数入口; 2.给形参分配空间; 3.传值; 4.执行函数体语句; 5.返回,释放空间。函数传参时什么时候传地址,什么时候传值?1.当只使用不修改实参变量对应空间的值,传实参变量名; 2.当使用并修改实参变量对应空间的值,传实参变量的地址。 举个例子:#include <stdio.h>void func(char *ptr){ ptr++;}

2016-12-09 23:54:20 743

原创 指针和数组的区别

指针和数组的区别主要体现在如下几个方面:1.空间分配数组分配空间时是静态分配,你定义多大的数组就分配多大的空间,并自动分配一片连续的内存空间; 指针变量本身是分配4字节的空间,但是指针可以结合malloc,calloc,realloc等函数动态分配空间,通过指针来访问由这些函数分配的内存空间。 所以从这点上看,指针的空间利用率要高于数组。2.访问效率数组通过下标直接访问,虽然访问效率高于指针,但

2016-12-08 23:05:29 1030

转载 malloc、realloc、calloc的用法,作用,区别,及实现原理

先来看一下三个函数的声明:void * malloc(unsigned size);void * realloc(void *ptr, unsigned newsize);void * calloc(size_t numElements, size_t sizeofElement);它们都包含在 #include <stdlib.h>头文件中,他们的返回值都是请求分配的地址,如果请求失败就返回N

2016-12-07 22:21:13 530

原创 数组认知——整型数组

一维数组1.通过键盘给数组的 每个元素赋值 通过以下的程序来讲解数组名的一些个人理解 int a[3]; int i; int *p = a; //p == a for(i = 0; i < 3; i++) { scanf("%d",&a[i]); scanf("%d",a + i);//scanf("%d",&a[0]); a

2016-12-06 22:17:53 6329

原创 字符数组的使用

一维字符数组,二维字符数组,字符指针数组#include <stdio.h>#include <stdlib.h>void printf_array1(char *src){ printf("array1 = %s\n",src);}void printf_array2(char (*src)[100]){ int i; for(i = 0 ; i < 3; i++)

2016-12-05 22:23:40 226

原创 字符串处理函数的编程实现

1.strlen的实现int my_strlen(char *src){ int count = 0; while(*src != '\0') { count++; src++; } return count;}2.strcpy的实现char * my_strcpy(char *dest, char *src){ char

2016-12-04 21:13:39 395

原创 嵌入式工程师LinuxC笔试题(一)

1.请问int * p 和 char * p分别占几个字节?为什么? 都是占4个字节,因为两者都是指针变量,指针变量里面保存的是地址,地址在操作系统中是固定长度,长度是由系统的位数决定的,操作系统32位,长度则为4个字节,而操作系统为64位,长度则为8个字节。2.请简述sizeof与strlen的区别 sizeof:是运算符,测量一个变量或数据类型所占的字节长度;统计字符串长度的时候加’\0’;

2016-12-03 23:47:36 3928

转载 malloc原理

malloc函数的一种简单的原理性实现malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针malloc()工作机制  malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以

2016-12-02 22:56:54 446

转载 嵌入式开发编程修养——C语言篇

什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快? 我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对 于速度快,只要编得多也就熟能生巧了。 我认为好的程序员应该有以下几方面的素质: 1、有专研精神,勤学善问、举一反三。 2、积极向上的态度,有创造性思维。 3、与人积极交流沟通的能力,有团队精神。 4、谦虚谨慎,

2016-12-01 23:07:19 410

原创 野指针的一些认识

什么是野指针随机指向一块内存的指针,称为野指针。野指针容易引起内存泄露。 非法访问:内存资源是由操作系统管理的,使用之前要向操作系统申请。野指针访问的那块内存空间可能是未向操作系统申请的内存空间,因为会被认为是非法访问。不是每次野指针都会报段错误,因为野指针获得的地址可能是已经向操作系统分配或申请过的变量的地址。如何避免野指针避免野指针,应该养成以下良好的编码习惯: 1.当一个指针没有指向时,将

2016-11-30 23:26:48 241

原创 从键盘输入父串,子串,要求删除父串中的子串。

如: 父串:“hellosdhellodsfhellohello” 子串:“hello” 要求删除父串中的hello。#include <stdio.h>#include <string.h>#define MAX_SIZE 1024int my_strncmp(char *s1, char *s2, int len){ int i; for(i = 0; i < len;

2016-11-29 22:42:52 332

原创 初识指针

如何理解指针?首先,指针是一个变量。这样的话,指针就有了变量的特性。系统为指针分配内存空间;指针有自己的地址;指针能够存值,但这个值比较特殊——地址。在前面的博客中已经提到指针在内存中占4个字节,即指针的字节长度为4字节。定义指针的规范? int * p; 怎么理解这句话,我是这么理解的:p是一个指针变量,保存的是一个地址,该地址是整型的。指针的类型和指针指向的类型为什么需要不同类型的指

2016-11-28 23:51:58 233

原创 数据类型

什么是数据类型?数据集合的划分,不同数据类型对CPU的意义是不一样的。数据类型有哪些?数据类型分为两大类:基本数据类型和复合数据类型。基本数据类型分为:空类型,字符型和数值型。复合数据类型分为:数组,结构体,联合体,枚举类型,指针类型。 其中数值类型分为:实型,整型。实型分为:单精度实型,双精度实型。整型分为:短整型,整型,长整型。其中每个又分为:有符号,无符号。字节长度字节长度:变量所占内存空间的

2016-11-27 23:54:13 448

原创 变量和常量

什么是变量?变量的特点?其值在其作用域内可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储空间。变量在使用前必须要定义,每个变量都有自己的地址。变量依据其定义的类型,分为不同类型,如整型变量、字符变量、浮点型变量、指针型变量等。变量的值可以发生改变,意味着它可以被覆盖、被写入、被赋值。每个变量必须要有一个名字和它所在内存空间绑定。 变量的三个特点: 变量的数据类型:主要说明变量

2016-11-27 00:16:24 302

原创 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.

#include <stdio.h>#include <string.h>#define MAX_SIZE 1024void reverse_word(char ch[]){ int count = 0,i,flag = 0; char *p = ch; char a[10][10]; while(*p != '\0') { flag =

2016-11-25 23:56:27 884

原创 进程等待wait,waitpid

wait函数wait函数用于等待子进程中断或者结束。 wait()函数会暂时停止目前进程的执行,直到有信号来到或者子进程结束为止。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status返回,而子进程的进程识别码也会一起返回。如果不在意结束状态值,则参数status可以设成NULL。子进程的结束状态值请参考waitpid()。wait

2016-11-24 23:37:26 370

原创 复杂指针声明

右左法则这是一个简单的法则,但能让你准确理解所有的声明。这个法则运用如下:从最内部的额括号开始阅读声明,向右看,然后向左看。当你碰到一个括号时就调转阅读的方向。括号内的所有内容都分析完毕就跳出括号的范围。这样继续,直到整个声明都被声明完毕。 对上述右左法则做一个小小的修正:当你在第一次开始阅读声明时,必须从变量名开始,而不是从最内部的括号。下面结合例子来演示一下右左法则的使用。int *(*(*

2016-11-23 23:53:09 354

原创 函数实现键盘输入整型数,将其转换成字符串输出。123456789 "123456789"

#include <stdio.h>#include <string.h>#define MAX_SIZE 1024char *transform(int num,char *a){ int i = 0; int len; char temp; while(num != 0) { a[i] = num % 10 + '0'; n

2016-11-22 22:15:36 1793

空空如也

空空如也

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

TA关注的人

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