
c
qian_xia_er
学无止境!!!
展开
-
C陷阱与缺陷(一)之词法分析中的“贪心法”
词法分析中的“**`贪心法`**”:C语言中的某些符号,例如/、*、和=,只有一个字符长, 称为单字符符号,但是例如/*、==包括了多个字符,称为多字符符号。当C编译器读入了'/'又读入了'*',那么编译器是将两个字符作为不同符号对待还是合起来作为一个符号呢? 答案是合起来,C语言对这个问题的解决方案可以归纳为一个很简单的规则:每一个符号应该包含尽可能多的字符。即“贪心法”“大嘴法” 例1:a...原创 2018-03-07 16:31:19 · 257 阅读 · 0 评论 -
C陷阱与缺陷(二)之整型常量
如果一个整型常量的第一个字符是0,那么该常量将被视作八进制数。 如下:(一不小心运行结果就和料想中的不一样了嘻嘻) “` include using namespace std; void main() { //int ar[] = {231,421,132,543,012,090}; //Debug,090无效的八进制数字 ...原创 2018-03-07 16:38:47 · 220 阅读 · 0 评论 -
C陷阱与缺陷(三)之字符与字符串
C语言中的单引号和双引号含义迥异,在某些情况下如果把两者弄混,编译器并不会检测报错,从而在运行时产生难以预料的结果。C语言中从形式上来看字符是由单引号修饰的,字符串是由双引号修饰的。 注意如下代码中的区边: “` include using namespace std; void main() { //char c = ”; 错误,用单...原创 2018-03-07 16:52:52 · 208 阅读 · 0 评论 -
C缺陷与陷阱(四)边界计算与不对称边界
C语言中,如果一个数组有10个元素,那么这个数组的下标范围是从0到9,一个拥有10个元素的数组中,存在小标为0的元素,却不存在下标为10的元素,即C语言中一个拥有N个元素的数组,它的元素的下标范围是从0到N-1为止 如下: #include<iostream> using namespace std; void main() { int i; int ar[10...原创 2018-03-07 17:09:28 · 241 阅读 · 0 评论 -
初级阶段递归调用实用举例
递归在程序应用中有着举足轻重的地位。如下简单介绍一下递归的基本概念及递归的一些应用。 递归定义:在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。一般可分为直接调用和间接调用。 直接调用:在调用函数f的过程中,又要调用f函数。 间接调用:如果在调用f1函数过程中要调用f2函数,而在调用f2函数的过程中又要调用f1函数。 注意递归调用的一些缺点:开销大,时间较长 递归的...原创 2018-03-10 12:29:52 · 575 阅读 · 0 评论 -
C语言中的柔性数组(伸缩性数组成员)
深入浅出C语言中的柔性数组 在日常的编程中,有时候需要在结构体中存放一个长度动态的字符串,一般的做法,是在结构体中定义一个指针成员,这个指针成员指向该字符串所在的动态内存空间,例如: typedef struct test { int a; double b; char *p; }; p指向字符串。这种方法造成字符串与结构体是分...转载 2018-05-13 21:01:18 · 593 阅读 · 0 评论