C语言
沉心修炼
这个作者很懒,什么都没留下…
展开
-
C指针初始化
之前学C++对指针初始化印象中有这种方式 int *p = 1。渐渐成习惯了,惯性理解成这样:自动给p分配一个值,指向的地址中的值是1。错误的理解方式一直延续,最近看C语言指针部分,练习好几个程序都出问题,最终发现问题在于初始化。指针如果不初始化,成为野指针是很危险的,不知道它指向哪里,会导致覆盖随机的内存区域。指针初始化大概有三种方式: 1. 将一个同类型变量的地址赋值给指针 例如原创 2015-11-12 23:28:51 · 1436 阅读 · 1 评论 -
C语言复杂类型声明
看了书中讲复杂类型声明,颇为复杂,C语言在这点上够折腾人的,虽然方便了编译器。这里把它梳理一遍。我们把声明的类型与表达式分开看 1.int a; a这个表达式的值是整型2.int array[N]; array[N]这个表达式的值是整型的,说明array是整型数组。3.int *pA; 这里 *pA 表达式的值是整型,pA是指针。4.int fun(int x, int y) ; 这原创 2015-11-15 18:09:36 · 567 阅读 · 0 评论 -
可变参数列表<stdarg.h>
调试的错误就是编程给你最好的东西,因为在每个错误上面都标志着前进的一步。 —-By CSDN在练习写一个简单版scanf函数,测试时出现意外错误,检查了一下,可能是对头文件里一些宏的引用出错。查了一下源代码,取了部分关键的几个宏定义:1)va_list 宏转载 2015-11-22 19:38:50 · 440 阅读 · 0 评论 -
数据结构之二叉树
《C程序设计语言》中“统计输入中所有单词出现次数”的程序,采用二叉树数据结构,理解代码实现过程并不顺畅,故梳理一下过程。递归函数理解起来费劲,不过通过一个例子去看整个过程,会容易理解些。每个不同的单词在树中都是一个节点,每个节点包括四个数据: 1.一个指向该单词内容的指针(注意存储的是地址,单词的内容放在另一个区域) 2.一个统计出现次数的计数值 3.一个指向左子树的指针 4.一个指向右子树原创 2015-11-17 21:19:04 · 351 阅读 · 0 评论