
C
文章平均质量分 77
macrohasdefined
这个作者很懒,什么都没留下…
展开
-
C语言内存对齐详解
2013-01-18 14:05 C语言内存对齐和pack pragmalxd_0401【转】转帖:typedef __PACKED struct字节对齐详解关键字:#pragma pack typedef __PACKED struct 结构 字节 对齐 一.什么是字节对齐,为什么要对齐 现代计算机中内存空间都是遵守byte划转载 2013-03-21 09:17:15 · 741 阅读 · 0 评论 -
宏和枚举的区别
宏和枚举的区别注:以下全部代码的执行环境为VC++ 6.0 70Kir( 宏和枚举之间的差别主要在作用的时期和存储的形式不同,宏是在预处理的阶段进行替换工作的,它替换代码段的文本,程序运行的过程中宏已不存在了。而枚举是在程序运行之后才起作用的,枚举常量存储在数据段的静态存储区里。宏占用代码段的空间,而枚举除了占用空间,还消耗CPU资源。 +~A#$ffN 但也转载 2013-04-18 15:06:28 · 1211 阅读 · 0 评论 -
C和C++中内存的划分
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放5.代码区。转载 2013-04-17 18:50:55 · 528 阅读 · 0 评论 -
关于C语言的15个指针面试题
1. 常指针与常量的指针 char * const p; char const * p const char *p 上述三个有什么区别? char * const p; //p为只读指针。 char const * p;//p值只读的指针。 const char *p; //和char const *p-----------------转载 2013-04-18 08:52:06 · 1013 阅读 · 0 评论 -
C语言const
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable)。我们来分情况看语法上它该如何被使用。 1、函数体内修饰局部变量。例:void func(){const int a=0;}首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值0。然后再看const转载 2013-04-17 20:07:38 · 399 阅读 · 0 评论 -
C语言static深入理解
一、c程序存储空间布局C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。 其实:转载 2013-04-17 19:54:34 · 535 阅读 · 0 评论 -
C语言main函数返回值
C语言几乎是所有人的第一个编程语言,而main函数则又是我们接触到的第一个函数。我们的所有程序都需要main函数,对于下面的代码,相信大家再熟悉不过了。 [cpp] view plaincopyprint?#include void main() { printf("I am main function./n"); } #incl转载 2013-04-17 17:32:42 · 1343 阅读 · 0 评论 -
C语言中全局变量初始化的重要性!!!
在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里: int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下: 编译器在编译的时候针对这两种情况会产生两种符号放在目标文件的符号表中,对于初始化的,叫强符号,未初始化的,叫弱符号。 连接器在连接目标文件的时候,如果遇到两个重名符号转载 2013-04-17 17:14:41 · 11440 阅读 · 0 评论 -
全局变量初始化顺序及注意事项
对于不同编译单位的全局变量,其初始化的顺序没有任何的保证,因此对不同编译单位里的全局变量,在它们的初始化顺序之间建立依赖性都是不明智的。 此外也没办法捕捉到全局变量初始化抛出的异常,一般来说要减少全局变量的使用,特别是限制那些要求复杂初始化的全局变量。所以,尽量不用全局变量;用静态变量,通过访问器进行访问。 例如:全局变量 int a =转载 2013-04-17 16:04:33 · 7943 阅读 · 0 评论 -
数组与指针---都是"退化"惹的祸
人的浅显认识, 欢迎批评指正.1. 什么是数组类型?下面是C99中原话:An array type describes a contiguously allocated nonempty set of objects with aparticular member object type, called the element type.36) Array types ar转载 2013-04-15 20:24:36 · 508 阅读 · 0 评论 -
static的作用(相当经典!!!)
static的作用 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; /转载 2013-04-19 11:22:59 · 426 阅读 · 0 评论 -
结构体变量A与B 可以直接相互复制
以前在使用结构体时没有在结构体变量之间直接赋值,今天同事在查看别人的代码时,发现有两个结构体变量直接赋值的语句当时感觉这个语句不对,认为在一个结构体里边,既有一般的无符号整形与数组,因为数组的赋值是不能直接赋值,要内存拷贝,从这里推理所以认为这个语句不对。于是问了一下,我当时以为是结构体指针变量的赋值,认为没有问题。还和同事争论了一番,当他让我看源代码时,发现是变量间的直接赋值,下意识中的判断是不转载 2014-02-17 14:03:14 · 5296 阅读 · 1 评论 -
malloc free 函数
在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用—— 就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!转载 2013-12-03 16:40:47 · 447 阅读 · 0 评论 -
C语言宽字符处理函数对照表
字符分类: 宽字符函数普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测试字符是否是字母 iswcntrl() iscntrl() 测试字符是否是控制符 iswdigit() isdigit() 测试字符是否为数字 iswgraph() isgraph() 测试字符是否是可见字符 iswlower转载 2013-10-29 17:06:11 · 1054 阅读 · 0 评论 -
C语言inline函数的使用方法
C语言inline函数的使用方法2012-01-20 00:00中国IT实验室佚名关键字:C语言 大学在教科书上学习过inline函数,定义为inline函数之后,会省去函数调用的开销,直接嵌套汇编代码,取代函数调用,提高效率。工作后项目中也很少用到inline来定义函数,近几天在研读google的google c++ style guide,发现之前自己对转载 2013-10-08 12:33:42 · 1053 阅读 · 0 评论 -
柔性数组
在讲述柔性数组成员之前,首先要介绍一下不完整类型(incomplete type)。不完整类型是这样一种类型,它缺乏足够的信息例如长度去描述一个完整的对象。 6.2.5 Types incomplete types (types that describe objects but lack information needed to determine their sizes).转载 2013-07-24 17:27:48 · 370 阅读 · 0 评论 -
C语言中scanf函数输入回车符的问题
2009-04-12 00:19 C语言中scanf函数输入回车符的问题 在用c语言编写输入语句的时候常用到scanf函数,初学者在刚用scanf函数输入时,经常会遇到各种各样的输入错误,最重要的是一定要记住scanf函数的输入格式,scanf函数里包含了哪些东西,输入的时候就必须有哪些东西,比如:scanf("%c%c%c"),那么输入的时候就必须连续输入3个字符,中间不转载 2013-06-17 11:43:12 · 1401 阅读 · 0 评论 -
C语言try catch 异常检测实现
为c语言实现异常处理机制(全)博客分类:C/C++ CC++C#D语言嵌入式引子:不管是在c++还是在java中,异常都被认为是一种很优雅的处理错误的机制,而如果想在c语言中使用异常就比较麻烦。但是我们仍然可以使用c语言中强大的setjmp和longjmp函数实现类似于c++的异常处理机制。有关c语言中setjmp和longjmp的资料可以参考:C语转载 2013-05-05 22:38:17 · 4295 阅读 · 0 评论 -
堆和栈
堆内存和栈内存详解 2007-11-09 16:55:45标签:堆内存休闲栈内存职场堆:顺序随意 栈:先进后出 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap)转载 2013-04-19 12:45:19 · 398 阅读 · 0 评论 -
C语言动态数组
C语言动态数组百科名片动态数组是指在声明时没有确定数组大小的数组,即忽略圆括号中的下标;当要用它时,可随时用ReDim语句(C语言中用malloc语句)重新指出数组的大小。使用动态数组的优点是可以根据用户需要,有效利用存储空间。目录词目释义为什么要使用动态数组?动态数组与静态数组的对比遵循原则构建所需指针构建所需函数说明:具体构建方法转载 2013-04-16 17:05:56 · 753 阅读 · 0 评论 -
C 语言新标准——C11
3C 语言新标准——C11Posted in Programming at December 21st, 2011 / 3 Comments »12月8号,ISO 发布了新的 C 语言的新标准——C11,之前被称为C1X,官方名称 ISO/IEC 9899:2011。新的标准可以这里下载。这个标准是基于今年4月发布的名为 N1570 的草稿,但据说并未做任何改动。根转载 2013-04-15 20:30:44 · 1045 阅读 · 0 评论 -
C语言中函数参数的入栈顺序 .
对技术执着的人,比如说我,往往对一些问题,不仅想做到“知其然”,还想做到“知其所以然”。C语言可谓博大精深,即使我已经有多年的开发经验,可还是有许多问题不知其所以然。某天某地某人问我,C语言中函数参数的入栈顺序如何?从右至左,我随口回答。为什么是从右至左呢?我终究没有给出合理的解释。于是,只好做了个作业,于是有了这篇小博文。#include void foo(int x, int转载 2013-04-11 19:20:03 · 549 阅读 · 0 评论 -
用 snprintf / asprintf 取代不安全的 sprintf
用 snprintf / asprintf 取代不安全的 sprintf在 C 語言裡,要建立一個字元陣列的字串,常常會使用 sprintf() 這個函數來做格式化的處理。但是實際上,這個函式卻不是那麼「安全」。怎麼說呢?sprintf() 的整個介面長的樣子的是:int sprintf ( char * str, const char * format, ... )也转载 2013-04-11 14:00:19 · 828 阅读 · 0 评论 -
可变参数宏
可变参数的宏调试的时候需要打印一些调试信息,刚开始的做法如下:1 #ifdef _DEBUG2 // 打印调试信息3 #endif这样的代码写得多了,就觉得繁琐,于是我进行了改进如下: 1 void DebugPrint(const char * format, ... );2 #ifdef _DEBUG3 #define DEBUG_PRINT转载 2013-04-07 12:55:25 · 470 阅读 · 0 评论 -
5分钟搞定内存字节对齐
奖提问】CSDN论坛第1期专家问答开始 来极客头条,推荐你的博客 下载频道3月领任务~赚下载分! 5分钟搞定内存字节对齐分类: C语言 2009-04-16 14:15 8633人阅读 评论(67)收藏 举报struct存储编译器gcc测试google写出一个struct,然后sizeof,你会不会经常对结转载 2013-03-25 11:10:40 · 406 阅读 · 0 评论 -
C语言中一种更优雅的异常处理机制
第16集 C语言中一种更优雅的异常处理机制作者:王胜祥 来源:希赛网 http://www.csai.cn 2005年5月19日 上一篇文章对C语言中的goto语句进行了较深入的阐述,实际上goto语句是面向过程与面向结构化程序语言中,进行异常处理编程的最原始的支持形式。后来为了更好地、更方便地支持异常处理编程机制,使得程序员在C语言开发的程序中,转载 2013-03-22 17:13:17 · 717 阅读 · 0 评论 -
堆 和 栈的 区别(经典)
堆 和 栈的 区别(经典)转载一篇理解堆和栈区别的好文章此文章虽然是面向C/C++程序员写得,但是对咱们Java程序员还是很有帮助的。 堆和栈的区别 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。转载 2013-03-22 15:03:53 · 393 阅读 · 0 评论 -
回调函数的概念及其使用
回调函数的概念及其使用 1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件转载 2013-03-22 11:28:15 · 556 阅读 · 0 评论 -
函数参数为void和没有参数的区别
C语言中的函数在声明和定义的时候可以没有参数。众所周知,如果函数被声明和定义为void f(void);则说明该函数在调用时不能传入任何参数。而如果函数被声明和定义为void f();则说明该函数在调用时候可以传入任意参数。下面做实验://t1.c void f(); //该函数将打印6个hello#include void f();int main(void){原创 2013-03-20 17:47:48 · 9601 阅读 · 0 评论 -
深入剖析GCC函数调用堆栈变化过程
大家在通过反汇编去分析gcc生成的AT&T汇编语句的时候,经常会发现在函数调用的开始总有下面的两条汇编语句: push %ebp movl %esp, %ebp 在函数调用结束的时候,可以看到: leave ret 这里笔者网上搜索了一些说明,tenfy简单翻译一下对应的英文说明,并加上自转载 2013-04-11 19:29:40 · 718 阅读 · 0 评论 -
国外知名网站Stackoverflow 历时两年评选出11本对程序员最有影响力的书籍
《 推荐11本对程序员最有影响力的书籍 》在购买以下图书时,您都无需犹豫!这些图书都经过了多年的读者口碑相传,有的出版至今快30余年,整整影响过几代程序员。而如今他们都还在推荐这些图书,可见他们的经典之处。 导读:原文来自 stackoverflow.com 上发表的一篇《 What is the single most influential bo转载 2013-04-11 19:38:38 · 634 阅读 · 0 评论 -
C语言数组与指针详解 .
++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.csdn.net/mr_raptor/article/details/6844691++++++++++++++++++++++++++++++++++++++++++ 好多同学都说:“老师,我看到指针就晕!”转载 2013-04-15 20:22:59 · 602 阅读 · 0 评论 -
c语言中数组名代表数组首地址,它的值在运行期间可以改变吗?
c语言中数组名代表数组首地址,它的值在运行期间可以改变吗?2009-06-01 15:21:47 分类: C/C++c语言中数组名代表数组首地址,它的值在运行期间可以改变吗?c语言中数组名代表数组首地址,它的值在运行期间是固定不变的,但是在main函数的参数中对指针数组名却可以出现类似于argv++的操作(谭浩强老师的c程序设计中有这样的程序),转载 2013-04-15 18:36:27 · 2613 阅读 · 1 评论 -
内存分配中堆和栈的区别
堆栈在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。要点:堆:顺序随意栈:先进后出堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(转载 2013-04-15 11:24:18 · 681 阅读 · 0 评论 -
linux内核编码风格
[精华] C程序代码风格http://www.chinaunix.net 作者:albcamus 发表于:2007-07-03 13:56:54【发表评论】【查看原文】【C/C++讨论区】【关闭】下面这篇文章是linux内核中Documentation/CodingStyle文件,觉得挺有意思,就顺手把它译出来了,因转载 2013-04-15 15:06:05 · 618 阅读 · 0 评论 -
你了解你所运行的程序的桢栈结构以及什么是缓冲区吗?
你了解你所运行的程序的桢栈结构以及什么是缓冲区吗?热4张博2010-11-15 22:13 昨晚查找一些关于利用缓冲区溢出漏洞获得系统root方面的资料,在IBM Developerworks上看到一篇很好的文章:Linux下缓冲区溢出攻击的原理及对策其中很详细的讲解了linux下关于缓冲区溢出的一些知识,其中有一段作为预备知识是关于linux下进程的地址空转载 2013-04-15 13:40:17 · 1138 阅读 · 0 评论 -
vsprintf
vsprintf/* 函数名: vsprintf 功 能: 送格式化输出到串中返回值: 正常情况下返回生成字串的长度(除去\0),错误情况返回负值用 法: int vsprintf(char *string, char *format, va_list param); // 将param 按格式format写入字符串string中注: 该函数会出现内存溢出情况,建议转载 2013-04-11 20:25:42 · 845 阅读 · 0 评论 -
Jeff向自己的网站StackOverflow说再见
2012年2月6日,Jeff Atwood宣布退出自己所创建的Stackoverflow.com和StackExchange.com.这是一个非常勇敢的急流勇退性质的举动。看着自己辛苦经营了4年的网站萌芽,发展,壮大乃至成功之后亦然决然的返回到最初的起点,和家人一起生活。 从一开始的冒险至今已经4年了。在这四年里,我们做了许多非凡的成就。Stackoverflow现在已经是繁忙的大城市,转载 2013-04-11 19:37:26 · 453 阅读 · 0 评论 -
StackOverflow程序员推荐:每个程序员都应读的30本书
“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。”很多程序员响应,他们在推荐时也写下自己的评语。以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 10的书。其实除了前10本之外,推荐数前30左右的书籍都算经典,伯乐在线整理编译这个问答贴,同时摘译部分推荐人的评语。下面就按照各本书的推转载 2013-04-11 19:35:22 · 446 阅读 · 0 评论 -
C语言中__inline函数作用解释
C语言inline函数的使用方法2012-01-20 00:00 中国IT实验室 佚名 ..关键字:C语言 大学在教科书上学习过inline函数,定义为inline函数之后,会省去函数调用的开销,直接嵌套汇编代码,取代函数调用,提高效率。工作后项目中也很少用到inline来定义函数,近几天在研读google的google c++ style guide,发现之前自己对inline函数的认识太过转载 2014-07-11 15:30:16 · 2027 阅读 · 0 评论