- 链表,一个对于学习过C语言的人都是再熟悉不过的概念了,可能很多学习过链表的人都觉得链表没什么值得太在意的地方,可是如果你走进linux内核,去看看linux内核里面链表的实现方式,你不得不为之惊叹。可能有人会觉得linux内核链表实现方式仅此而已,但是你要知道,如果你没有见到这样的实现方式之前,能写出那样的链表嘛?所以在写链表的文章时,我深知自己不可能用一篇文章来讲解完链表的知识点,所以我特地分为三个部分(单链表、双链表、linux内核链表,而其中linux内核链表单独拿出来讲是因为它的特殊性,在后面
- 关键字:
C语言 链表
- 摘要的重要性是不言而喻的,每次发文章我都很纠结如何写出一个有特色的摘要来,能够以最为简短的文字向读者描述出我所要表达的东西。但是常常出现的问题是,摘要写得太简短了,读者看了不清楚文章究竟要讲啥;摘要写得稍微长点的话自然能够描述清楚所要表达的东西,但是却也出现了另外一个问题,就是读者看到大段的文字描述,觉得枯燥无味,直接二话不说给文章判了个“死刑”,导致这种情况下愿意真正的花时间看完摘要的读者屈指可数,更不用说文章的正文部分了,所以时长感慨写文章最头疼的莫过于摘要了。
很多
- 关键字:
C语言 动态数组
- 每次写摘要我都觉得是一件很头疼的事儿,因为我知道摘要真的很重要,它几乎直接就决定了读者的数量。可能花了九六二虎之力写出来的东西,因为摘要的失败而前功尽弃,因为绝大多数的读者看文章之前都会浏览下摘要,如果他们发现摘要“不对口”,没有什么特色和吸引人的地方,那么轻则采用一目十行的方法看完全文,重则对文章判“死刑”,一篇文章的好坏虽然不能用摘要来衡量,但是它却常常被读者用来衡量一篇文章的好坏,从而成为了文章读者数量多少的一个关键因素。下面言归正传来说说断言,如
- 关键字:
C语言 断言
- 正如前一篇博客所说的,但凡人都是急功近利和有惰性的,都不喜欢花时间去阅读那些我们认为枯燥的文字描述,喜欢直接进入主题。但是有时候恰恰就是因为我们的这种急功近利和惰性,使得我们绕了很大一个弯,到最后还是回到了文字描述上来,所以我觉得适当的文字描述下,让读者对于文章的整体有个大概的认识之后,再去学习能收获更好的效果。我的前两篇关于C指针的博客用的摘要都是copy我第一篇C指针博客的摘要,当然这篇也不例外,还是会引用我第一篇博客的摘要,只是在引用摘要之前我要先交代件事儿,就是关于函数指针和指针函数、以及指针
- 关键字:
C语言 指针
- 但凡人都是急功近利和有惰性的,我就是个例子。不想每篇博客都写一个摘要和那些大段的文字描述,但是为了让一些新的读者朋友了解我的博客内容,我还是像前面说的那样,把第一篇关于指针的摘要搬过来,因为我写的这几篇都是关于指针的,所以没有必要每篇一个摘要,在此就偷偷懒了,如果读过我前面两篇C指针博客的朋友可以跳过这篇博客前面的摘要不读,直接进入主题部分。
懂得C语言的人都知道,C语言之所以强大,以及其自由性,绝大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。所以从我的标题加了个(一
- 关键字:
C语言 指针
- 懂得C语言的人都知道,C语言之所以强大,以及其自由性,绝大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。所以从我的标题加了个(一)也可以看出指针的重要性,我尽可能的向大家交代清楚我对于指针的理解。所以在讲解的过程中我尽可能的用代码加文字的描述方式,通过代码的分析来加深我们对于指针的理解,我给出的都是完整的代码,所以读者可以在看的过程中直接copy下去即可运行,希望下面的讲解能够对你有所帮助。
在此也特地强调下,如果以后出现类似的情况时,我博客的第一段均作为摘要。如果已经
- 关键字:
C语言 指针
- 懂得C语言的人都知道,C语言之所以强大,以及其自由性,绝大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。所以从我的标题加了个(一)也可以看出指针的重要性,我尽可能的向大家交代清楚我对于指针的理解。所以在讲解的过程中我尽可能的用代码加文字的描述方式,通过代码的分析来加深我们对于指针的理解,我给出的都是完整的代码,所以读者可以在看的过程中直接copy下去即可运行,希望下面的讲解能够对你有所帮助。
首先让我们来看看定义一个指针的一般形式为:
基类型 *指针变量名
- 关键字:
C语言 指针
- 或许还有不少人对于const修饰符理解的并不深刻,都只是停留在一个比较浅的层面上,仅仅是在读别人代码的时候看到了const修饰符的使用,自己的写代码的过中从未使用过,所以自然对于const修饰符比较陌生。那么到底什么是const修饰符,我们在自己编写C语言代码的过程中又该如何有效的使用const修饰符呢,现在让我们来学习下const修饰符的使用。
const在C语言中算是一个比较新的描述符,我们称之为常
- 关键字:
C语言 const
- 显示函数的调用关系是调试器的必备功能,如果我们在程序的运行中出现了崩溃的情况,通过函数的调用关系可以快速定位问题的根源,懂得函数调用关系的实现原理也可以扩充自己的知识面,在没有调试器的情况下,我们也可以自己来实现显示函数的调用关系。在我们自己动手写backtrace函数之前,先来看看glibc提供的backtrace函数的使用。代码如下:
#include
#include
#include
#define MAX_LEVEL 4
static void call2
- 关键字:
C语言 函数
- 在学习C语言的过程中我们可能很少会去写变参函数,印象中大学老师好像也没有提及过,但我发现变参函数的实现很巧妙,所以还是特地在此分析下变参函数的实现原理。无需标准C的支持,我们自己写代码来实现。
先来看看一个实现代码:
#include
#define va_list void*
#define va_arg(arg, type) *(type*)arg; arg = (char*)arg + sizeof(type);
#define va_start(arg, sta
- 关键字:
C语言 函数
- 我们经常会听到这样的说法,不懂得函数指针就不是真正的C语言高手。我们不管这句话对与否,但是它都从侧面反应出了函数指针的重要性,所以我们还是有必要掌握对函数指针的使用。先来看看函数指针的定义吧。
函数是由执行语句组成的指令序列或者代码,这些代码的有序集合根据其大小被分配到一定的内存空间中,这一片内存空间的起始地址就成为函数的地址,不同的函数有不同的函数地址,编译器通过函数名来索引函数的入口地址,为了方便操作类型属性相同的函数,c/c++引入了函数指针,函数指针就是指向代码入口地址的指针,是指向函数
- 关键字:
C语言 函数 指针
- realloc()函数
原型:extern void *realloc(void *mem_address, unsigned int newsize);
语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。
头文件:#include 有些编译器需要#include ,在TC2.0中可以使用alloc.h头文件
功能:先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时
- 关键字:
C语言 内存分配
- 何为堆栈?首先要明确堆栈是两种数据结构。栈是硬件,堆是一种动态存储结构,但是它们俩个又是如何共存的呢?
- 关键字:
C语言 堆栈
- C语言作为嵌入式开发的基础语言已经越来越让工程师们知道它的厉害:可以直接操控寄存器,方便CPU的功能设置;可以直接操作物理地址,并进行位的操作进而达到硬件的操作等等。如果你用8位16位单片机进行开发学习,相信使用一些程序技术可以完成设计:循环、选择、位操作、条件判断、数组和程序嵌套等。如果你进行操作系统,关注操作系统的内核(以linux为例),你就会发现这些C语言是其中的一小部分。对于操作系统来说更多运用到指针,究其原因,一个很重要的原因就是处理速度快。那么,今天我就把C语言的指针做个总结。
第
- 关键字:
C语言 指针 linux
- 8、边界对齐
CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。处理字长为8位数据的CPU通常就叫8位的CPU, 当前的CPU大部分是32位的CPU,如果某台机器的字长为4个字节(也就是32位),那么下面的结构体会占用多少内存空间呢?
struct StrA{
int a;
char b;
short c;
char d;
};
如果你的答案是12字节,恭喜你!答对了。这个结构在内存中的存储如下图所示:
a为int型,占4个字节(0-
- 关键字:
C语言 static 指针
c语言介绍
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。主要有以下特点:
C语言在很多方面都可以用,不仅仅是在软件开发上,各类科研都是需要用到C语言的。具体应用比如我是学硬件的,单片机以及嵌入式系统都可以用C来开发。
C 语言发展如此迅速 [
查看详细 ]
关于我们 -
广告服务 -
企业会员服务 -
网站地图 -
联系我们 -
征稿 -
友情链接 -
手机EEPW
Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
《电子产品世界》杂志社 版权所有 北京东晓国际技术信息咨询有限公司

京ICP备12027778号-2 北京市公安局备案:1101082052 京公网安备11010802012473