Linux/c/c++
文章平均质量分 64
embed_huang
爱学习,爱分享
展开
-
C语言中局部变量和全局变量在内存中的存放位置
C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register) 1.局部变量和全局变量在讨论函数的形参变量时曾经提到,形参变量只在被调用期间才分配内存单元,调用结束立即释放。这一点表明形参变量只有在函数内才是有效的,离开该函数就不能再使用了。这种变量有效性的范围称变量的作用域。不仅对于形参变量,C语言中所有的量都有自己的作用域。变量说明的方式不同,其原创 2012-12-12 10:16:41 · 5302 阅读 · 1 评论 -
select函数详解
select()的机制中提供一个fd_set的数据结构,实际上是一个long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是Socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执行了select()的进程哪个Socket或文件可读。 一、select函数#incl原创 2013-01-04 12:19:20 · 12421 阅读 · 10 评论 -
Linux目录扫描:打印指定目录下的所有文件及目录
一、目录扫描函数及其相关结构1. struct dirent *readdir(DIR *dp); 2. DIR *opendir(const char *name); 4. int closedir(DIR *dp); 5. void rewinddir(DIR *dp); 6. void seekdir(DIR *dp,long原创 2013-01-04 12:18:25 · 5499 阅读 · 6 评论 -
Linux线程管理必备:互斥量与条件变量
做过稍微大一点项目的人都知道,力求程序的稳定性和调度的方便,使用了大量的线程,几乎每个模块都有一个专门的线程处理函数。而互斥量与条件变量在线程管理中必不可少,任务间的调度几乎都是由互斥量与条件变量控制。互斥量的实现与进程中的信号量(无名信号量)是类似的,当然,信号量也可以用于线程,区别在于初始化的时候,其本质都是P/V操作。编译时,记得加上-lpthread或-lrt哦。 有关进程间通信原创 2013-01-28 09:10:53 · 4547 阅读 · 3 评论 -
C语言运算符优先级(超详细)
每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖!C语言运算符优先级优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右原创 2012-12-08 09:56:09 · 91249 阅读 · 27 评论 -
数组指针和指针数组的区别
数组指针与指针数组的区别在于:数组指针p是一个指针,而指针数组p是一个存放N个指针变量的数组。一、数组指针 int (*p)[n] 重点:()优先级高([]、()的优先级是一样的,但它们的方向是从左至右的,所以先运行括号里的*p),首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长原创 2013-03-04 11:45:33 · 2493 阅读 · 0 评论 -
swap(a,b)值交换的4种方法
这篇文章所要表述的内容的确很简单,写之前,我纠结了很久:写与不写。平常swap(a,b)值交换,我们基本都是使用第一种方法,对于数学较好的人,可能会想到第二种方法,想到时,一定感觉很好,。对于汇编或对位有理解的人,可能会想到第三种方法,这个方法很妙。但,真正促使我写这篇文章的,还是第四种方法,妙,真的很妙,先(b = a),我是真没想到,我想,这么好的东西,尽管简单,但值得发表,以此共享。原创 2013-02-25 10:04:29 · 8888 阅读 · 9 评论 -
DHCP:开发板上动态获取ip的2种方法
DHCP动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途: 1.给内部网络或网络服务供应商自动分配IP地址 2.给用户给内部网络管理员作为对所有计算机作中央管理的手段。方法一:dhclient 1.下载 https://www.is原创 2013-02-25 10:06:12 · 4512 阅读 · 2 评论 -
C/C++面试经典大全
C/C++是面试过程中的重中之重,如何才能在此过程中让自己脱颖而出呢?依我个人之见,就是不断的看面试笔试题目,不断的积累,不断的吸收和总结。 这是我早年间面试前用的法宝,我都忘记自己看了多少遍了!!! 因为这是经过我长期积累以及修改,次序有些些乱,不吝赐教 1.下列程序执行后的输出结果是 ____. void main() {原创 2012-12-11 13:58:24 · 4397 阅读 · 8 评论 -
getline()函数
我在网上搜了半天getline()函数,大多针对C++的,重载函数比较多,云里雾里的,而且没有实例,反正就是没有自己所需要的getline()函数。所以,自己在Linux下man了一把,并做了测试。getline()函数的功能是从文件中获取行信息,即每次读取一行信息。 因为我使用getline()函数的目的是获取本地网卡信息,即eth0的信息,从而判断启动机子时是否查了网线(本来可以从驱原创 2013-04-16 09:15:14 · 12248 阅读 · 6 评论 -
探讨父子线程、进程终止顺序不同产生的结果
Linux下编程,线程、进程退出顺序问题纷纷扰扰,如果父进程/线程先于子进程/线程终止,系统会做什么处理呢?反之,如果子进程/线程先于父进程/线程终止,系统又会做什么处理呢?下面是我个人平时在笔记上做的一些象征性的总结,如果有疑问之处,大可提出,我一直认为怀疑是人类进步的根本所在。一、线程 Linux线程创建函数为pthread_create(),默认规则是谁创建子线程,谁就原创 2013-05-06 09:03:10 · 4898 阅读 · 1 评论 -
C语言调试手段:锁定错误
在项目开发工程中,如果能确定哪个文件下的哪个函数下的哪行出错--即锁定错误,那该多好啊,该文章就是为此而作的。 首先来了解一下文件默认的输出信息的函数吧:文件信息函数: printf("line : %d\n", __LINE__); //当前行数 printf("filename : %s\n", __FILE__);原创 2012-12-11 10:30:19 · 2461 阅读 · 2 评论 -
这些年我记下的一些编程错误
编程不经历错误或警告,怎能见彩虹,没有人能随随便便成为高手。身为程序员的我们,如果哪一天没有了错误或警告的提示,一定会有一种不祥的预感,对吧,都懂的。编程N年来,碰到过的问题多得自己都记不清了,你也一样,如果可以选择,我愿时光倒流,真希望都能记下来,现在就可以写本《错误集》了,。下面是我心情好时,有想法时,随手记下的几个错误或警告,遗憾的是,这些年,就记下那么几个而已,见笑了,希望能给像我一样在路原创 2013-04-15 09:15:22 · 14051 阅读 · 12 评论 -
ARM-Linux下WEB服务器Boa的移植、配置和运行测试
Linux下使用的轻量级WEB服务器主要有:lighttpd、thttpd、shttpd和boa等等,而Boa是使用最为广泛的轻量级WEB服务器之一(当然,阿帕奇是世界使用排名第一的Web服务器软件)。Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。 工具链为:arm-hismall-原创 2013-07-17 16:30:13 · 5066 阅读 · 0 评论 -
C++ sizeof实例详解
在C++中使用sizeof要比C复杂很多,因为C++类中有static静态变量,virtual虚函数,还有继承、派生等。sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。sizeof使用形式有三种:sizeof(var_name)或sizeof var_name或sizeof(var_type)。 下面5个列子针对C++,没有涉及到sizeof字节对齐及基本数据类型即只针对C++特有,并且针对的是32位机。原创 2013-07-19 11:42:57 · 2949 阅读 · 5 评论 -
C语言指针并不难
C语言的核心在于指针,这2个指针题目,如果你不用编译就能得出正确的答案,那你一定是C的高手,不择不扣的高手—指针并不难! 第一题:求p[-1]、p[-5]的值(此题重点在于负号,很简单,考察对指针了解的广度方面)#include int main(void){ char* p = NULL; char* tmp = "12345678";原创 2012-12-21 11:03:06 · 31983 阅读 · 13 评论 -
C语言字符串操作大全
附:转载他人,自己加工。 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncm原创 2012-12-08 12:53:25 · 13639 阅读 · 2 评论 -
Linux下\r\n问题
常在Linux下操作,难免要遇到\r\n问题,特别在很多地方比如最近的邮件发送,怎么都\r\n了,以前只有\n的时代好像已经过去了,因为我是一个比较喜欢总结的人,一个喜欢理论先行的人,所以,认真的测试并且理解了一番,尽管我个人认为是比较可以了,但,如果哪位高手看出了不妥之处,不吝赐教! 一、例子源文件:main.c例一:#include int main(void){原创 2012-12-18 11:10:57 · 6456 阅读 · 6 评论 -
指令解析
这虽然只是指令解析的一部分,但这是最核心部分。完整指令为:AT+REG[admin][2][00:0C:29:AA:0B:A7]。/*************************************************************************************************** **文件:GetParameters.c **编写者原创 2012-12-10 15:30:26 · 1692 阅读 · 1 评论 -
C程序启动代码分析
好东西,你懂的,值得拥有! 一、映像文件基本组成映像文件加载时域包括RO和RW段,运行时域则包括RO、RW和ZI三个段。其中RO和RW段的内容在加载时和运行时是一样的,只是存储空间可能不同,而ZI段则是运行时由初始化函数创建的。 RO段:Read-Only段,包括源程序中的CODE段,只读数据段(包括变量的初始化值——可以是任意变量,全局/局部、静态/动态变量的初值;还原创 2012-12-12 10:04:20 · 1616 阅读 · 0 评论 -
字节序问题:大小端的判定
大小端的判断很简单,可判断了有什么用呢?这是一个难缠的问题,我最近就碰到了这样一个问题,比如,int a = 0x12345678,char* p = &a,那么p[0]等于多少呢?答案要么是0x12,要么是0x78,对吧,如果你知道他是小端(因为地球人都知道),那么你肯定就知道p[0] = 0x78,呵呵,换句话说,理解大小端对指针的运用还是有一定帮助的。 一、大小端概念原创 2012-12-17 13:32:45 · 1852 阅读 · 2 评论 -
Linux下的时间函数:设置及获取时间
一、时间函数 time_t time(time_t *t); char *asctime(const struct tm *tm); char *asctime_r(const struct tm *tm, char *buf); char *ctime(const time_t *timep); ch原创 2012-12-19 17:04:27 · 3266 阅读 · 1 评论 -
C语言游戏必备:光标定位和颜色设置
喜欢编写游戏的朋友们,你们有福了,这个资料足以让你玩转WINDOWS和Linux下的光标定位以及颜色,enjoy it。 一、WINDOWS:1.光标定位函数:#include #include /****** 光标移到指定位置 ********************************/void gotoxy(HANDLE hOut, int x, int原创 2012-12-12 12:26:50 · 7936 阅读 · 1 评论 -
autotools生成Makefile(一)
这几天突然觉得自己想做点什么,就想到了automake生成Makefile,这个久违的老友,可搞了大半天,连最简单的hello,world的例子都弄了很久,惭愧啊!那时候还真有点老了的感觉,但看看《非诚勿扰》等节目,跟qq里的小妹妹聊聊天,然后不知不觉中,头文件、源文件等不同目录下的autotools也意外的搞定了,这个世界真是太奇怪了,惊喜怎么总在意料之外呢,呵呵,话多了,下面就写些大家都知道的原创 2012-12-08 09:49:34 · 4449 阅读 · 3 评论 -
Linux静态库与动态库详解(一看就懂)
库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 一、静态库和动态库的区别1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大--空间,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他原创 2012-12-08 14:04:42 · 1862 阅读 · 2 评论 -
嵌入式开发常用英语单词--你知多少?
如果说你英语不咋的,那很大可能说明你的IT水平也就那样,看看这些我们经常能碰到的熟悉的朋友(单词)吧,或许,你会想到更多。嵌入式开发常用英语单词主要分为以下五大部分: 1.C语言和数据结构 2.Linux开发环境 3.ARM嵌入式接口技术和体系结构 4.Linux设备驱动常识 5.嵌入式硬件技术基础。 慢慢看吧,或许,感觉就来了……原创 2012-12-11 09:18:46 · 12026 阅读 · 8 评论 -
sizeof详解
经常在C下编程,不了解精通sizeof就有点说不过去了,本文可没有sizeof与strlen的区别哦,尽管这个对比很经典,不过,将就点吧。 一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。 操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的原创 2012-12-12 10:46:47 · 1242 阅读 · 0 评论 -
一个简单的结构体与指针的题目:测测你的功力有多深?
刚学C语言结构体与指针时,对这个题目的理解我耗费了好长一段时间,地址,地址的内容……哎,今天分享一下。个人认为,这是一个简单但又不简单的题目,有些小陷阱,所以,元芳,看你的了。 假设变量a的地址为:0x12345678#include struct A{ int i; int *p;}; int main(int argc, char* ar原创 2012-12-12 17:59:27 · 7266 阅读 · 9 评论 -
autotools生成Makefile(二)
多个目录下的autotools生成Makefile:1.设计好目录以及源码(每个目录下都必须配置文件Makefile.am)一、main.c目录下:[root@localhost 2]# lsinclude main.c Makefile.am src[root@localhost 2]# cat main.c#include int main(void)原创 2012-12-13 09:26:05 · 1929 阅读 · 1 评论 -
精简Makefile
如果在Linux下玩不转Makefile,那你真out了,这应该是Makefile较为精华的部分,难得共享。 一、一个简单通用的Makefile例子1.编写源文件5个源文件:A.c B.c C.c D.c main.c5个头文件:A.h B.h C.h D.h main.h(工作中其实main.h可以不用的,也不用生成main.o)在同一原创 2012-12-19 10:53:20 · 3832 阅读 · 6 评论 -
C/C++混合编程
在工作中,C、C++密不可分,做我们嵌入式方面的,当然更多的是C,但,有时候却少不了C++,而且是C、C++混搭(混合编程)在一起的,比如,RTP视频传输,live555多媒体播放等都是C++下的,他需要调用JRTPLIB库,再比如,我那邮件发送,我也用C++写的,定义了一个Email对象,包含了成员:收发邮件地址,用户名,密码等,以及方法:邮件头、Base64编码和邮件发送这些操作,很好用,所以原创 2012-12-26 17:51:03 · 13085 阅读 · 10 评论 -
Linux grep指令详解--实用型
Linux下grep指令跟find指令一样的强大,find主要查找文件,而grep则是内容,两者配合相得益彰,趁着周末,自己好好的总结了一番! 1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户原创 2012-12-08 10:52:47 · 2169 阅读 · 2 评论 -
Linux下TCP,UDP以及广播与多播通信(代码大全)
TCP、UDP、广播、多播的客户端服务器代码链接地址为(for free):tcp代码:http://download.csdn.net/detail/huangminqiang201209/4860661udp代码:http://download.csdn.net/detail/huangminqiang201209/4860665广播代码:http://download.csdn.原创 2012-12-08 11:44:22 · 4540 阅读 · 1 评论 -
进程间通信:消息队列
最近在Hi3515上调试Qt与DVR程序,发现他们之间使用消息队列通信的,闲暇之余,就总结了一下消息队列,呵呵,自认为通俗易懂,同时,在应用中也发现了消息队列的强大之处。 关于线程的管理(互斥量和条件变量)见:http://blog.csdn.net/huangminqiang201209/article/details/8540590一、消息队列的特点 1.消息队列原创 2012-12-05 17:51:16 · 3865 阅读 · 2 评论