- 博客(24)
- 资源 (7)
- 收藏
- 关注
原创 C与汇编混合编程
汇编的优势: 执行效率高、能够直接控制处理器汇编调用C函数: 将C函数地址赋值给PC指针即可(ldr PC,=main)C调用汇编函数: 将汇编函数声明为全局函数,在C程序中直接调用C内嵌汇编: 格式: 范例:优化:
2014-06-16 14:53:15
742
原创 后缀表达式计算
算法:遍历后缀表达式中的数字和符号 对于数字: 进栈 对于符号: • 从栈中弹出右操作数 • 从栈中弹出左操作数• 根据符号进行运算• 将运算结果压入栈中 遍历结束:栈中的唯一数字为计算结果
2014-05-21 15:49:59
777
原创 中缀表达式变后缀表达式
算法分析:遍历中缀表达式中的数字和符号 对于数字: :直接输出 直接输出 对于符号: • 左括号: :进栈 进栈• 符号: :与栈顶符号进行优先级比较 与栈顶符号进行优先级比较• 栈顶符号优先级低: :进栈 进栈• 栈顶符号优先级不低: :将栈顶符号弹出并输出 将栈顶符号弹出并输出, ,之后进栈 之后进栈• 右括号: :将栈顶符号弹
2014-05-21 11:34:17
882
原创 可复用单链表的实现
/******************LinkList.h**********************/ #ifndef LINKLIST_H_#define LINKLIST_H_typedef void LinkList;//定义结点指针域 typedef struct _tag_LinkListNode LinkListNode ;struct _tag_LinkListNod
2014-05-18 11:49:27
1206
转载 浅谈java反射机制
反射,很容易让人与RTTI混淆起来。虽然二者都是获取类型信息的机制,但是二者是存在本质区别的。RTTI(Run-Time Type Information,运行时类型信息)是在编译时获取.class文件,而反射机制在编译阶段是获取不到.class文件的,只有在运行时才能去得到.class文件(当然也有可能找不到)。 接下来,将全面介绍一下反射机制。 什么是反射?
2014-05-10 21:47:48
669
转载 从一道面试题看深拷贝浅拷贝问题
Trend科技的一道面试题:请看下面的程序,说说会出现什么问题?#include #include #include using namespace std; class CDemo { public: CDemo():str(NULL){}; ~CDemo() { if(str)
2014-05-08 17:13:46
578
原创 传递指向指针的引用
#includeusing namespace std;void ptrswap2(int *&v1,int *&v2)//指向指针的引用是某一指针的别名,同变量的引用一样,可以实现对传递给形参的实参数值的交换{ int *temp=v2;//指针别名,当然以指针的形式来应用 v2=v1; v1=temp;}void ptrswap1(int *v1,int *v2)//利用指
2014-05-05 10:31:12
653
原创 opencv出现opencv_core247d.dll丢失问题
今天编译了opencv的一个程序老是出现“计算机丢失opencv_core247d.dll”的问题,
2014-04-14 17:03:10
4903
原创 Linux中的SIGCHLD及wait,waitpid的使用
在一个进程终止或者停止时,将SIGCHLD信号发送给其父进程。按系统默认将忽略此信号。如果父进程希望被告知其子系统的这种状态,则应捕捉此信号。信号的捕捉函数中通常调用wait(waitpid)函数以取得进程ID和其终止状态 该信号常用于处理僵死(zombie)进程,通过在listen调用后增加如下函数调用:signal(SIGCHLD, sig_chld); //void
2014-03-28 15:15:18
3376
原创 signal函数中的SIGPIPE
在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。即连接建立,若某一端关闭连接,而另一端仍然向它写数据,第一次写数据后会收到RST响应,此后再写数据,内核将向进程发出SIGPIPE信号,通知进程此连接已经断开。而SIGPIPE信号的默认处
2014-03-28 11:32:28
2630
1
转载 c语言中的类型提升问题
下面是引用的一个例子——这个代码是从一个朋友的博文中复制过来的,但是当时这位朋友没有去说明类型提升的问题,而是阐述汇编的过程。/***************************************************************/int main(){int i;unsigned char *p;char *p1;int a[] = {
2014-03-27 14:53:36
1085
原创 数组引用和引用数组
#include int main(int argc, char *argv[]) { int a[5] = {1,2,3,4,5}; int (&b)[5] = a; //数组引用,给数组a[5]取别名b[5],正确 int &b[5] //引用数组,数组中的元素为引用,语法错误! ret
2014-01-06 21:38:49
1218
原创 ARM裸机之系统时钟
系统时钟设置的基本思想:1.知道开发板的晶振频率(2440:12MHz 6410:12MHz 210:24MHz)2.知道系统时钟的PLL数目及其对应产生的时钟 2440: 6410: 210: 基本设计步骤:1.配置Locktime(一般为默认,实际一般无需配置)2.设置分频系数3.设置ARMCLK(
2013-11-14 21:14:02
890
原创 Linux内核模块开发
一. 内核模块特点 a.内核模块本身不被编译进内核文件(zImage或者bzImage) b.可以根据需求,在内核运行期间动态的安装或卸载二. 内核模块设计 a.主体部分 #include#includestatic int hello_init(){ return 0;}static void hel
2013-10-27 16:49:00
664
原创 Linux内核配置与编译
一.配置内核 1.1 make menuconfig: 基于文本模式的菜单型配置, 配置好的文件一般位于系统文件的主目录下(.config隐藏文件) 内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件,Linux内核提供了一系列可供参考的内核配置文位于Arch/$cpu/configs
2013-10-24 11:35:15
736
转载 ARM寄存器
ARM寄存器一、ARM工作状态下的寄存器组织ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个位状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC(即R15)、一个状态寄存器都是可访问的。通用寄存器通用寄存器包括R0~R15,可以分为3类:
2013-10-15 15:31:50
716
原创 GDB调试基本流程
GDB使用流程:1.编译生成可执行文件: gcc -g tst.c -o tst2.启动GDB gdb tst3. 在main函数处设置断点 break main4. 运行程序 run5.利用更加丰富的gdb命令对程序进行 GDB命令:v list(l) 查看程序v break(b) 函数名 在某函数入口处添加断点v break(b)
2013-06-20 16:00:32
773
原创 字符串中找出连续最长的数字串
在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789。#include int getstr(char* str){ char* pc =NULL;
2013-06-20 10:27:42
663
原创 整数取反的c语言实现
题目很简单,完成函数reverse,要求实现把给定的一个整数取其相反数的功能,举两个例子如下:x = 123, return 321x = -123, return -321#include int reverse(int x){ int s = 0; int label = 0; if(x<0) {
2013-06-10 16:41:56
8565
原创 回调函数的一些理解
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 简单的说就是用函数(可看做指针)作为参数进行传递,这样就能将调用者和被调用者分开,且看下例:#include
2013-06-01 18:30:28
634
原创 Linux基本应用之NFS---实现两台主机间的通信
一.基本知识NFS(网络文件系统)为两台Linux主机之间的通讯,提供了类似于windows上共享目录一样的服务。在嵌入式Linux系统开发中,Linux目标机经常通过NFS方式访问Linux宿主机上的文件。为了实现实现这种访问,首先需要在Linux宿主机上搭建NFS服务器二.具体操作① 关闭Linux防火墙 /etc/init.d//iptables stop
2013-05-31 10:19:41
1677
原创 Linux下execl函数的初步学习
相关函数:fork, execle, execlp, execv, execve, execvp Windows下头文件:#include Linux下头文件:#include 函数定义:int execl(const char *path, const char *arg, ...); 函数说明:execl()其中后缀"l"代表list也就是参数列表的意思,第
2013-05-30 10:03:19
1126
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人