2013年12月21日

摘要: 今天接着对链表进行进一步完善,对于上节中已经实现了对节点的删除操作,这次对这个操作进行升级,符合条件的都可以被删除(通过函数指针来实现),具体实现如下:list.c:#ifndef _LIST_H_#define _LIST_H_#include typedef struct node{ int data; struct node* next;} node_t;typedef void (*FUNC)(node_t*);typedef int (*FUNC2)(node_t*);//这个是用来判断是否节点符合条件的node_t* list_insert_front(node_t* ... 阅读全文
posted @ 2013-12-21 22:29 cexo 阅读(361) 评论(0) 推荐(0)
摘要: 今天继续完善自己的链表,上次已经实现了链表的插入、遍历、销毁方法,对于链表的插入,我们上次是在头结点进行插入的,这次,我们来实现一个在任意结点进行插入的方法。实现链表的另外一种插入方法----在任意位置进行插入:在实现它之前,先实现获取任意位置的结点的函数,为便在实现任意插入时会使用到它,先在头文件中定义:list.h:#ifndef _LIST_H_#define _LIST_H_#include typedef struct node{ int data; struct node* next;} node_t;typedef void (*FUNC)(node_t*);node... 阅读全文
posted @ 2013-12-21 09:35 cexo 阅读(286) 评论(0) 推荐(0)

2013年12月18日

摘要: 在于C语言指针的相关知识点算是已经学得差不多了,当然,语言的学习是一个终生的,所以还需慢慢去学习,今天就以一个非常经典,也是体现指针应用的一个例子,来操作练一下所学的指针相关的知识点-----链表对于链表,我想学过编程的应该都对它有比较清楚的了解,下面简单对它进行回顾一下:链表的基本操作:下面自己动手利用指针的知识一点一点来实现链表,同时学习一下C语言多文件的编译风格:第一步:搭建好基础开发框架:首先需要定义一个结构体,来代表一个结点,结点里面的数据域和指针域两个构成,将其定义放到头文件(.h)中【至于放到.h头中的好处,请参考http://www.cnblogs.com/webor2006/ 阅读全文
posted @ 2013-12-18 21:21 cexo 阅读(340) 评论(0) 推荐(0)

2013年12月17日

摘要: 今天继续对指针进行探讨,请看下面:函数指针:下面通过一个程序,简单明了的对函数指针有个基本认识:#include void test(int n){ printf("test %d ...\n", n);}int main(void){ void (*f)(int); // 这里的f就是函数指针变量 void (*f2)(int); // 这里的f就是函数指针变量 // 以下两种写法是等价的 f = &test; f2 = test; // 以下两种写法也是等价的 f(100); // 调用函数 (*f2)(200); ... 阅读全文
posted @ 2013-12-17 21:10 cexo 阅读(242) 评论(0) 推荐(0)

2013年12月16日

摘要: 今天继续对于C语言的指针进行学习,话不多说,进入正题。数组作为参数传递【指针传递】:下面通过一系列程序来说明数组作为参数传递是属于指针传弟:一维数组:编译运行,看结果:编译运行:我们知道“数组定义之后,它的首地址是无法重新指向新地址的”,如下:编译:而请看如下情况:编译运行:说明:当一维数组作为函数参数时,有三种写法都等价,都是int*a二维数组:编译:如果省略了二维数会怎样呢?编译:说明:命令行参数:main函数是程序的入口函数,今天来对其参数进行研究,先通过程序来直观的感受下:运行结果:分析一下内存模型:所以,可以通过循环,将命令行的所有参数都打印出来:对于上面的程序,也能用指针的指针来代 阅读全文
posted @ 2013-12-16 21:01 cexo 阅读(236) 评论(0) 推荐(0)

2013年12月15日

摘要: 今天继续对指针进行研究,话不多说,进入正题:指针数组与数组指针:关于这两者的介绍,在http://www.cnblogs.com/webor2006/p/3463918.html有介绍,下面简单回忆下:以下通过一些示例来进一步理解指针数组和数组指针:示例一:输出结果:示例二:运行结果:示例三:输出结果:指针数组与二维数组:基于上面的实现,再来通过一个图来总结下指针数组与二维数组:指针的指针:下面通过一程序来直观的感受下:运行:下面通过一个实例来说明下指针的指针的使用场景:运行结果:上图中可以看到find函数使用了指针的指针,那为什么要用它呢,我用一级指针是否能达到同样的目的呢,来看下面的尝试: 阅读全文
posted @ 2013-12-15 14:16 cexo 阅读(266) 评论(0) 推荐(0)

2013年12月10日

摘要: 今天继续对指针进行学习,正式正入主题:字符指针:对于上面的理论,下面用程序进行论证:输出结果:所以论证了:str1是字符数组变量,str1保存了字符串"cppcourse"str2是字符指针变量,str2并不保存字符串“cppcourse”本身,而是保存常量"cppcourse"的地址编译失败:所说又论证了“由于str2指向的是字符串常量“cppcourse” ,常量不能被更改,因而str2[0] = 'C';将引发错误。”字符数组与字符指针的区别:下面分别从以下几个方面来解析:存储分配读写权限这个上面已经论证过了:字符数组是可读可写的字 阅读全文
posted @ 2013-12-10 21:02 cexo 阅读(260) 评论(0) 推荐(0)

2013年12月8日

摘要: 上次对指针进行了初步认识,接下来,继续挖掘C语言的魂!指针与一维数组:这时编译是没有问题的:编译:输出结果:这里面会有点绕,但很重要,先运行一段程序,再来阐述上面的观点:#include int main(void){ int a[] = {1, 2, 3, 4, 5}; int* p = a; printf("%p\n", a); printf("%p\n", &a); printf("%p\n", a+1); printf("%p\n", &a+1); return 0;}运行结果:结果 a+1 阅读全文
posted @ 2013-12-08 16:05 cexo 阅读(296) 评论(0) 推荐(0)
摘要: 经过前面漫长的c语言学习,终于进入了C语言中最核心,最重要的部分啦!其实对于前面的知识,自己都有所了解,必境C语言也是一直在学(只是没学通而已(∩_∩)),但是通过写博文的方式,我发现最好的一个地方就是它能够让你很踏实地去学习,摒弃浮燥,因为你写出来的东西都是自己亲自验证过的,强制让自己把所学的东西... 阅读全文
posted @ 2013-12-08 10:01 cexo 阅读(308) 评论(2) 推荐(0)

2013年12月6日

摘要: 继续进行C语言学习之旅,现在已经快进入了C的核心了,所以需更加细心地学习,言归正传,开始学习:什么是结构体呢?定义结构体类型:注意:结构体最后的分号不能省略这时编译就出错了:结构体变量:当我们定义好了一个结构体类型之后,就可以使用它,类似于基本类型一样,但是:会有一些差别。①使用方式一【用得较少】:注意:struct关键字不能省略,代表该变量是一种结构体类型:这时编译就出错了:②使用方式二【用得较少】:我们可以将结构体声明在函数体内,声明之时就给出变量:③使用方式三【通常用这种方式】:从使用方式一中可以看出,使用起来不是那么方便,有没有解决办法呢?答案当然有,也就是第三种方式,用typedef 阅读全文
posted @ 2013-12-06 23:02 cexo 阅读(533) 评论(0) 推荐(0)

导航