C语言
文章平均质量分 64
Joe_IceWind
这个作者很懒,什么都没留下…
展开
-
《C 陷进和缺陷》----词法分析中的“贪心法”
C语言中的某些符号,例如/、*、=,只有一个字符长,称为单字符符号,而C语言中的其他符号,例如/*、==,以及标识符,包括了多个字符,称为多字符符号。当C语言编译器读入一个字符/后又跟了一个字符*,那么编译器就必须做出判断:是将其作为两个分别的符号对待,还是后起来作为一个符号对待。C语言对这个问题的解决方案可以归纳为一个很简单的规则:每一个符号应包含尽可能多的字符。即编译器将原创 2009-09-19 21:36:00 · 739 阅读 · 0 评论 -
C专家编程上的一些习题
第一题: 关于链表问题;问题:怎样才能检测到链表中是否存在循环? 对访问过的每个元素做个标记,继续遍历这个链表,如果遇到某个已经做过标记的元素,说明链表中存在循环。(如何做标记呢?思考之…如果链表中的元素全部都是正整数的话,我们可以这样做,对访问过的每个元素加上个负号,然后我们继续遍历链表,如果访问到负数了,就说明链表里存在循环。如果既有正数又有负数呢?那么我们可以先遍历链表以此找原创 2009-10-12 21:11:00 · 1078 阅读 · 0 评论 -
数组的内存模型
1 一维数组的内存模型一维数组说开了就是一组连续的数值,这组数值存储在一段连续的内存空间之中,只是不一样的是,若是我们不定义数组我们来访问这一连串的数值需要n个变量对应这n个数值或是需要一个指针进行遍历。只是现在我们为这一组值起了个名字而已,以后我们便可以通过这个名字+下标来访问这一组值了。如我们定义了一个数组:char a[] = “hello world”;它的大小为sizeo原创 2009-10-12 17:41:00 · 1150 阅读 · 0 评论 -
数组和指针
数组和指针是很容易被混淆的东西,他们两个并不是在任何情况之下都等价的。1 int *p; int a[10];这两个就存在很明显的区别,我们可以给a赋值,就不可以给*p赋值。很明显的道理,目前p并没有指向有效地内存空间,我们无法对其进行操作,否则会引发灾难。2 int a[10] = {1,2,3,4,5,6,7,8,9,10};--------------------------原创 2009-10-11 15:52:00 · 605 阅读 · 0 评论 -
C编程小事
1 字符串的连接C++: cout nihaoama?" 这种输出结果为: hello ni hao nihaoama? 两个字符串之间会出现一个空格。要想不出现空格必须第二行处于行头C:printf("helooolasdfasdfafdasf/nasfdasfassasdaf");这个效果和上面一样,但是这是一种旧式的写法。最新的写法为: pri原创 2009-10-11 13:42:00 · 622 阅读 · 0 评论 -
如何返回局部数组?
稍微有些编程经验的朋友都会知道一个函数是无法返回一个局部数组的,至于原因,我想从两个方面进行说明,虽然并不是这两个方面都对其有影响,但我认为在这个问题上我们都该了解的东西:① 函数的返回类型不能为一个数组类型。这个就是说,作为函数返回类型的不能为一个数组,我们要想返回一系列的值,只能用一个指针来代替了,返回指向这一系列值的第一个元素的指针。② 局部数组,具有局部原创 2009-10-11 12:18:00 · 3128 阅读 · 0 评论 -
volatile的作用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic var转载 2009-10-11 12:59:00 · 598 阅读 · 0 评论 -
C陷阱与缺陷学习总结
总结序言:学习大牛们的书籍,每次都是新潮澎湃,热血沸腾,看他们的书心中就有一种信任,有一种无比的膜拜。最初看到这本书的时候心情也是如此。Andy这个大牛我想大家也都如雷贯耳了吧.从图书馆找到他的书籍,我二话不说便细细的品味起来,希望从中能获得意想不到的东西.然而当我真正的深入阅读之后才发现原来一切都是那么常见的问题,一切都来源于实际的编程,并不是什么高深的东西。然而正是这些常见的细微的编程问题原创 2009-09-24 15:25:00 · 757 阅读 · 0 评论 -
深刻理解指针类型
1 内存存储Code:char * p = "hello,world"; 对于个语句中,p所占的内存空间是分配在栈空间中的,在变量p的生命期结束时自动释放,其中"hello,world";是存在全局的静态区的,是到这个程序才会释放的空间。当p的生命期结束后,我们将无法访问到存储"hello,world"的那块内存。所以对一下应用将会是一个错误原创 2009-09-19 21:40:00 · 652 阅读 · 0 评论 -
线性表
在开始本章节之前,我要说明两个问题:1 线性表的一个误解很多人认为,并且严老师的书上也是这么划分,就是将线性表和栈,队列划分开来。其实并不是这么回事,我们可以参考《计算机程序设计艺术》第一卷,第二章。其实线性表包括链表,栈,队列。2 就是我这里想说一些前些天一个女同学问我的一个问题她大概是这么说的:NULL是什么啊?p = NULL;是什么意思啊?为什么要等于NULL啊?我开始原创 2009-10-14 22:25:00 · 680 阅读 · 0 评论