
C
文章平均质量分 71
tracyjk
这个作者很懒,什么都没留下…
展开
-
C/C++内存分配详解
一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵转载 2009-12-10 13:10:00 · 447 阅读 · 0 评论 -
指针详解
<br />这篇文章摘自网易广州社区的C语言版精华区。文章不错,不敢独享!作者girlrong是以前C语言版版主,她乐于助人,虚心诚恳,颇受网友欢迎。只可惜现在已退隐江湖了。 <br /><br /><br />第一章。指针的概念<br /><br />指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 <br /><br />先声明几个指转载 2010-11-08 15:09:00 · 354 阅读 · 0 评论 -
C语言编程写的一个http下载程序
<br />大家都很熟悉HTTP协议的应用,因为每天都在网络上浏览着不少东西,也都知道是HTTP协议是相当简单的。每次用到FlashGet之类的下载软件下载网页,当用到那个“用FlashGet下载全部链接”时总觉得很神奇。<br />后来想想,其实要实现这些下载功能也并不难,只要按照HTTP协议发送request,然后对接收到的数据进行分析,如果页面上还有href之类的链接指向标志就可以进行深一层的下载了。HTTP协议目前用的最多的是1.1版本,要全面透彻地搞懂它就参考RFC2616文档吧。<br />下面转载 2010-11-08 15:15:00 · 1030 阅读 · 0 评论 -
判断IP输入是否有误
<br />#include <stdio.h><br />int main() {<br /> int IP[4];<br /> int i;<br /> char c;<br /><br /> printf("请输入一个ip地址:");<br /> while (1) {<br /> fflush(stdin);<br /> if (5==scanf("%d.%d.%d.%d%c",&IP[0],&IP[1],&IP[2],&IP[3],&c))转载 2010-11-08 15:28:00 · 603 阅读 · 0 评论 -
C语言之详解#ifdef等宏及妙用
<br />这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 <br /> 条件编译命令最常见的形式为: <br /> #ifdef 标识符 <br /> 程序段1 <br /> #else <br /> 程序段2 <br /> #endif <br /> <转载 2010-11-08 16:52:00 · 474 阅读 · 0 评论 -
Linux下的打印当前文件夹下文件的程序
#include #include #include #include #include #include int list(char* filename){ struct stat statbuf; struct dirent *dirp; DIR *dp; static int depth = 0; int count = 0; if (stat(filename, &statbuf)转载 2010-11-16 11:21:00 · 1865 阅读 · 0 评论 -
学生成绩管理查询系统
#include#include#includetypedef struct Link{ int number; char name[10]; char sex[4]; int Chinese; int English; int Match; int average; struct Link *next;}Student;int amount=0;Student *InitStudent(){ Student *info;转载 2010-11-18 09:16:00 · 699 阅读 · 0 评论 -
extern "C"
<br />时常在cpp的代码之中看到这样的代码:<br /> #ifdef __cplusplusextern "C" {#endif//一段代码#ifdef __cplusplus}#endif<br />int f(void){ return 1;}<br />这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入转载 2011-01-13 09:16:00 · 421 阅读 · 0 评论 -
去掉字符串首尾空格的程序(不再声明变量)
<br />#include <stdio.h>char* trim(char* str){ if( ' ' == *str ) { while( ' '== *str ) { str++; if( 0 == *str ) return 0; } trim( str ); return str; }else{转载 2010-11-18 08:57:00 · 524 阅读 · 0 评论 -
volatile
volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以死代码消除。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化,volatile的字面含义是易变的,它有下面的作用: 1 不会在两个操作之间把volatile变量缓存在寄存器中。在多任务、中断、转载 2011-06-06 09:52:00 · 416 阅读 · 0 评论 -
第七章 右左法则----复杂指针解析
<br />首先看看如下一个声明:<br /> <br />int* ( *( *fun )( int* ) )[10];<br /> <br />这是一个会让初学者感到头晕目眩、感到恐惧的函数指针声明。在熟练掌握C/C++的声明语法之前,不学习一定的规则,想理解好这类复杂声明是比较困难的。<br /> <br />C/C++所有复杂的声明结构,都是由各种声明嵌套构成的。如何解读复杂指针声明?右左法则是一个很著名、很有效的方法。不过,右左法则其实并不是C/C++标准里面的内容,它是从C/C++标准的声明规定转载 2011-04-18 15:50:00 · 436 阅读 · 0 评论 -
总结几种log打印printf函数的宏定义
http://blog.chinaunix.net/u1/38994/showart_1168773.html[c-sharp] view plaincopy#include #define lU_DEBUG_PREFIX "##########" #define LU_DEBUG_CMD 0x01 #defi转载 2013-03-27 11:28:26 · 1184 阅读 · 0 评论 -
以“|”为标志进行信息分隔
<br />以“|”为标志,进行换行显示如下格式信息“123|456|789”<br />#include <stdio.h>#include <string.h>#include <unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdlib.h>main(){ char prnstr[20]; memset(prnstr,0,20); char *tem原创 2010-11-08 08:53:00 · 469 阅读 · 0 评论 -
50个c/c++源代码网站
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。 1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Ho转载 2010-11-05 20:10:00 · 600 阅读 · 0 评论 -
button
/* ** $Id: button.c,v 1.16 2007-10-25 08:25:16 weiym Exp $**** Listing 20.1**** button.c: Sample program for MiniGUI Programming Guide** Usage of BUTTON control.**** Copyright (C)原创 2009-12-17 09:18:00 · 691 阅读 · 0 评论 -
彻底搞定0x0d和0x0a
什么是0x0d和0x0a,可能大部分人都知道是回车和换行字符,但那个是回车,那个是换行?估计很多人都一时说不清楚了---也许你不相信,那就调查下周围的同事吧,估计会包含以下字眼“大概。我记得。回车是0x0d吧”。这次我移植arm-linux C的程序,至VC++,发现了很多不同,尤其是这个回车换行浪费我一上午的时间,我决定借此机会彻底搞定他们,这两个令人讨厌的家伙。先说下浪费我一上午的那个东西--原创 2010-04-08 10:01:00 · 874 阅读 · 0 评论 -
setitimer() 定时函数
<br />setitimer()为Linux的API,并非C语言的Standard Library.<br />setitimer()有两个功能,一是指定一段时间后,才执行某个function,二是每间格一段时间就执行某个function.<br />以下程序demo如何使用setitimer()。 <br />view plaincopy to clipboardprint?<br />/* <br /> <br /> <br /> <br />Filename : timer.cpp <转载 2010-06-28 15:04:00 · 2449 阅读 · 0 评论 -
C语言编译全过程
<br />C语言编译全过程<br /><br /><br /> 编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。<br /> 编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等)<br /><br />1. 编译预处理<br转载 2010-07-12 13:48:00 · 419 阅读 · 0 评论 -
GDB文档
用GDB调试程序GDB概述 2使用GDB 5GDB中运行UNIX的shell程序 8在GDB中运行程序 8调试已运行的程序 两种方法: 9暂停 / 恢复程序运行 9一、设置断点(BreakPoint) 9二、设置观察点(WatchPoint) 10三、设置捕捉点(CatchPoint) 10四、维护停止点 11五、停止条件维护 12六、为停止点设定运行命转载 2010-08-02 17:13:00 · 489 阅读 · 0 评论 -
MINIGUI成功移植到MINI2440详解
<br /><br />主要参考网络文章MINIGUI移植到2440嵌入式网络博客<br />作者:刘溯奇 地点:南宁师专数计系<br />MiniGUI 1.3.3 移植详解,作者:大漠孤狼<br />说明:<br />因为要用MINIGUI做PDA,得把MINIGUI移植到我的开发板MINIGUI上,移植成功,支持PNG,JPG,鼠标和触摸屏可以用,但触摸屏不准,需要较正,较正本打算用tslib.1.3,移植成功后,MINIGUI要使用它做为IAL,还需对libminigui1.6.10/res/i转载 2010-09-26 17:01:00 · 2518 阅读 · 0 评论 -
在屏幕上打印0-999这1000个数字,要求不用循环,不用递规
<br />#include <stdio.h>#define A(x) x;x;x;x;x;x;x;x;x;x;int main (void){ int n = 1; A(A(A(printf ("%d ", n++)))); return 0;}<br /> <br />转自:http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=program&Number=545251转载 2010-12-01 08:50:00 · 1509 阅读 · 1 评论 -
linux库文件编写入门
<br />一、为什么要使用库文件 <br /> 我们在实际编程工作中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同,<br /> 实现代码也相同,也是我们所说的重复代码。比如,很多项目里都有一个用户验证的功能。<br /> 代码段如下:<br /> //UserLogin.h文件,提供函数声明<br /> int IsValidUser(char* username, int namelen);<br /> //UserLogin.c文件,实现对用户信息的验证<br /> int转载 2010-12-02 08:58:00 · 428 阅读 · 0 评论 -
Turbo C 2.0 设置详解
<br /> <br />来源:不详 责任编辑:phltj 作者: 日期:2006-4-13 9:01:30 点击次数:687 <br />对于初学程序设计的人来说Turbo C 2.0无疑是最简单最理想的入门语言环境之一,但也常由于环境变量设置的不正确导致程序无法编译运行,严重打击了初学者来之不易的自信心。为了迅速解决此类问题,使大家能把精力集中到程序设计上来,我们特地编写本文以帮助有心涉足编程领域的初学者。 <br /><br />1.准备TC2.0 <转载 2010-10-12 09:07:00 · 632 阅读 · 0 评论 -
计算某天是星期几
<br /> 计算某天是星期几,最常见的公式: <br /><br />W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D <br /><br />Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。 <br /><br /> 最好用的是蔡勒公式: <br /><br />W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1 <br /><br />C是世纪数减一,y是年转载 2010-10-12 09:22:00 · 1247 阅读 · 0 评论 -
用GDB调试Segmentation Fault错误
调试Linux程序的时候,出现Segmentation Fault是最郁闷的事情了,程序代码量很大的时候,可能花很多时间都找不到出错原因。 这里介绍一种对你调试Segmentation Fault很有帮助的方法,可能能迅速帮助你找到出错的代码行。 这种方法需要用到Linux提供的core dump机制:当程序中出现内存操作错误时,会发生崩溃并产生核心文件(core文件)。使用GDB可以对产生的核心文件进行分析,找出程序是在什么时候崩溃的和在崩溃之前程序都做了些什么。 首先,你的Segmentation Fa转载 2010-12-08 17:22:00 · 837 阅读 · 0 评论 -
函数名与函数指针
转自:http://www.programfan.com/blog/article.asp?id=6030一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){转载 2013-12-19 14:50:17 · 624 阅读 · 0 评论