自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C函数参数传递与返回值传递

(1)参数传递       __stdcall和__cdecl都是函数调用约定关键字,先给出这两者的区别,然后举实例分析:  __stdcall:参数由右向左压入堆栈;堆栈由函数本身清理。    __cdecl:参数也是由右向左压入堆栈;但堆栈由调用者清理。  另外,这两者在同一名字修饰约定下,编译过后变量和函数的名字也不一样,具体见另一博文:名字修饰约

2016-09-25 17:54:10 3896

转载 内核态和用户态的区别

http://blog.csdn.net/fatsandwich/article/details/2131707#http://jakielong.iteye.com/blog/771663当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前

2016-09-25 17:37:04 353

原创 嵌入式编程小知识点

(1)uint8_t,uint16_t,uint32_t数据类型_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,新瓶

2016-09-25 16:12:35 288

转载 野指针

系统为存储指针变量本身分配内存和指针指向的内存是两个概念如:char  *p ; 系统为指针变量分配内存,用于保存地址值,在32位机器中,为四字节;但由于未初始化,指针指向的目标内存是不确定的。      野指针指向一个已删除的对象或未申请访问受限内存区域的指针。与空指针不同,野指针无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作

2016-09-22 13:34:13 260

原创 字符串处理函数

C语言提供了丰富的字符串处理函数,大致可分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。 使用这些函数可大大减轻编程的负担。用于输入输出的字符串函数,在使用前应包含头文件"stdio.h",使用其它字符串函数则应包含头文件"string.h"。下面介绍几个最常用的字符串函数。字符串输出函数 puts格式:  puts(字符数组名)功能:把字符数组中的字符串输

2016-09-22 13:10:29 349

转载 转义字符

转义字符 编辑所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。字符表编辑所有的转义字符和所对应的意义:转义字符意义ASC

2016-09-22 12:33:27 683

转载 运算符优先级

C语言编辑优先级运算符名称或含义使用形式结合方向说明1后置++后置自增运算符变量名++左到右 后置--后置自减运算符变量名-- [ ]

2016-09-21 21:24:12 307

转载 嵌入式C语言经典试题

C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。          从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这个愚蠢的问题吗?如要你答

2016-09-21 04:26:14 1638 1

转载 Interrupt Service Routines(中断服务程序):ISR

中断是嵌入式系统中重要组成部分,很多编译器开发商都让标准c支持中断,并引入关键字_interrupt.但是:1、ISR不能有返回值;2、ISR不能传递参数;3、ISR应该是短而高效的,在ISR中做浮点运算是不明智的;4、ISR中不应该有重入和性能上的问题,因此不应该使用pintf()函数。  转自CSDN 1.ISR 不能有返回值。为什么?

2016-09-21 03:29:40 1682

原创 求素数(筛法求素数)

一.要判断素数,那么就要知道什么是素数。素数就是只能除了1和它本身外,不能被任何整数整除的数。那么在c语言编程中我们只要确定一个整数不能被1到它本身之间的整数所整除,那么它就是素数。二.用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到“筛子”为空时结束。如有:

2016-09-18 21:33:26 594

转载 位操作

按位操作Title:       位操作基础篇之位操作全面总结Author:     MoreWindowsE-mail:      [email protected]:   C/C++ 位操作 位操作技巧 判断奇偶 交换两数 变换符号 求绝对值 位操作压缩空间 筛素数 位操作趣味应用 位操作笔试面试位操作篇共分为基础篇和提高篇,基础篇主要对位操作进行

2016-09-18 19:06:35 584

原创 union

“联合”是一种特殊的类,也是一种构造类型的数据结构。在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该“联合”所定义的任何一种数据,这些数据共享同一段内存,以达到节省空间的目的(还有一个节省空间的类型:位域)。 这是一个非常特殊的地方,也是联合的特征。另外,同struct一样,联合默认访问权限也是公有的,并且,也具有成员函数。(1)当一个共

2016-09-16 23:00:35 243

转载 switch

switch(表达式){     case 常量表达式1:  语句1;    case 常量表达式2:  语句2;    …     case常量表达式n:  语句n;    default:  语句n+1;}其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后

2016-09-16 22:05:18 354

原创 预处理

(1)从会敲代码开始,我们就知道编译器的重要性,没有这东西,我们的代码就是一堆字符而已。而编译器编译程序的步骤主要有四个——预处理、编译、汇编和链接,最后得到可执行的目标文件。 四个步骤各自的工作会是怎么样的呢?不知为何,对这个东西有了点兴趣。以GCC为例,主要工作是这样的:预处理阶段会调用cpp,编译阶段会调用cc得到汇编程序,汇编阶段调用as得到目标代码

2016-09-16 20:23:35 356

转载 C/C++基本数据类型

学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。说明:(1)类型修饰符signed和unsigned用于修饰字符型和整形。(2)类型修饰符short和long用于修饰字符型和整

2016-09-16 20:11:24 266

原创 scanf

键盘缓区与输入流区别:(1)键盘缓冲:就是对应于硬件层面,键值从键盘输入先保存于此。

2016-09-15 20:54:51 1142

转载 C语言文件操作详解

C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。#文件操作标准库函数有:      文件的打开操作 fopen 打开一个文件      文件的关闭操作 fclose 关闭一个文件      文件的读写操作 fgetc 从文件中读取一个字符              fputc 写一个字符到文件中去

2016-09-13 16:01:38 407

转载 C语言中最常用标准库函数

原文位置:http://blog.csdn.net/candyliuxj/article/details/4793153标准头文件包括:                                                                           一、标准定义()     文件里包含了标准库的一些常用定义,无论我们包含哪个标准头文件

2016-09-13 15:29:59 344

转载 C语言字符数组的初始化

1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。[cpp] view plain copychar str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};  即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于

2016-09-13 14:50:06 481

原创 数组与指针

(1)变量的定义包括一个基本数据类型和一组声明符,在同一条定义语句中,虽然基本数据类型只有一个,但是声明符的形式却可以不同。类型修饰符是声明符的一部分。例子:int *p ;其中:基本数据类型:int      声明符:*p      类型修饰符:*(2)int* a[4]     指针数组

2016-09-12 22:40:57 681

转载 程序占用的内存分类

字符串常量,放在哪个存储区呢?是“自动存储区”还是“静态存储区”中?比如:char *pstr="hello world!";这里,"hello world!"是一个字符串常量,pstr是在栈中的变量。我想问,字符串常量,在哪个内存区域分配空间呢?好像应该不是在“栈区“分配空间吧!!!一、预备知识—程序的内存分配一个由C/C++编译的程序

2016-09-12 21:23:46 370

原创 用C语言实现判断PC大小端

(1)采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将低位存放在高地址。采用大端方式 进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char(这种数据刚好是储存一个字节)之外,还有16bit的shor

2016-09-12 20:18:20 1915

原创 华为面试编程题

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输入

2016-09-08 17:23:50 601

转载 枚举类型---enum

枚举类型  在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为

2016-09-07 06:27:53 339

原创 计算机网络——TCP/IP

附注:本文我主要从该处:http://wenku.baidu.com/link?url=vxbdevFLuWCD3Qbq_KGeuGw6J1a0zlIA94RCEGZ40LiuaJZi-BTQQnwkj-mCforKM5YykZBqUhn6Nx0ZNJg3ggBKtcTJpaxzV2oTyQzr02O文章进行总结与标注重点同时进行相应的解释理解目录:             (1)

2016-09-04 11:07:07 4004 5

原创 C语言之static

目录:(1)静态全局变量(2)static局部变量(3)static函数正文:(1)静态全局变量    静态全局变量和其他的全局变量的存储地点并没有区别,都是在.data段(已初始化)或者.bss段(未初始化)内,但是它只在定义它的源文件内有效,其他源文件无法访问它。所以,普通全局变量穿上static外衣后,它就变成了新娘,已心有所属,只能被定义它的源文件(新郎

2016-09-04 07:37:18 277

原创 C语言字符

目录栏:(1)换行符‘\n’和回车符‘\r’(2)常见字符ASCII值正文:(1)换行符‘\n’和回车符‘\r’顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符 (顺序注意) '\n' 10 换行(newline)'\r' 13 回车(return)也可以表示为'\x0a'

2016-09-04 07:09:51 254

转载 函数宏

要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。  在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。  我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义:  #define MAX(

2016-09-03 13:51:54 270

转载 动态链接库、静态库、import库区别

动态链接库、静态库、import库区别动态链接库(Dynamic Linked Library):Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中。其中有3个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,

2016-09-03 11:14:40 660

转载 Linux内存管理(.text .data .bss)

Linux内存管理orisun@orisun-desktop:~/Program$size memory2text data bss dec hexfilename2074 284 16 2374 946memory2可以看到一个可执行程序在存储(没有调入内存)时分为代码区,数据区,未初始化数据区三部分。 (1)代码区存放CPU执行的机器指令。通常代码区是共享的,即其它

2016-09-03 10:52:40 2528

原创 sizeof

(1) C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来!(2) sizeof有三种语法形式,如下:123sizeof(object);//sizeof(对象);sizeof(type_name);//sizeof(类型);sizeof

2016-09-03 00:34:14 295

转载 linux命令——patch(含diff)

这里唯一需要说明的是p0的含义,因为在x.patch补丁文件里的路径信息是这样的:--- xx/xxx/xxx1   p表示跳过几级目录,因为是在x目录下使用的patch命令,xx目录就在x目录下,所以不必跳过任何目录,而应该使用--- xx/xxx/xxx1   完整路径,所以此时使用的是p0。注意:patch -p后面是不能带负数 的。不使用p参数的时候,patch命令会

2016-09-02 07:08:16 247

空空如也

空空如也

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

TA关注的人

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