06 2012 档案

摘要:在当前WEB当中,有些人都会抛弃asp.net的服务器控件,转而使用ajax来进行数据的交互和存储. 当我们大量使用ajax的时候,对于新手而言,肯定会创建很多的ashx或aspx页面,通过拼接参数,在ashx或aspx中对参数进行解析, 并根据某些特定的参数进行解析来判断当前的请求属于哪种类型的操作,然后手动获取Request.QueryString、Params、Form内的值,来实现功能.大致代码如下:View Code 1 //html 2 名字:<input id="name" type="text"/> 3 <input t 阅读全文
posted @ 2012-06-27 11:19 ahl5esoft 阅读(18103) 评论(18) 推荐(4) 编辑
摘要:标准库提供了一些用于处理字符串的函数,它们的原型位于头文件string.h中. strlen:用于计算字符串的长度,返回类型是一个无符号的整数,因此将它用于表达式的时候要特别注意,如下:if( strlen(x) <= strlen(y) )//可以正常运行 ...if( 0 <= strlen(y) - strlen(x) )//该表达式永远为真,因为右边表达式的结果将会是一个无符号整数,而无符号数绝对不会为负 ... 所以如果要使用strlen作为表达式,则应该在有符号数的表达式中使用. strcpy:把一个字符串从一个位置复制到另外一个位置,要注意2点:需要复制的字符串... 阅读全文
posted @ 2012-06-27 07:13 ahl5esoft 阅读(223) 评论(0) 推荐(0) 编辑
摘要:除了优先级不同以外,下标表达式array[index]和间接访问表达式*(array + (value))是一样的。原因就如前一篇文章提到的,数组名是指向数组第一个元素的指针常量,所以下标既可以用于数组名,也可以用于指针表达式,但是当下标用于指针表达式的时候,编译器将失去检查下标有效性的能力,因此在程序可维护性和运行效率上还是要多斟酌。 指针有时会比下标更有效率,下标绝对不会比指针更有效率,前提是他们必须被正确的使用。 虽然下标表达式和间接表达是可以是相同的,但是数组和指针并不相等。除非当数组作为形参时,数组和指针才是相等的,因为实际传递的都是指向数组第一个元素的指针的一份拷贝。但是如... 阅读全文
posted @ 2012-06-26 07:28 ahl5esoft 阅读(256) 评论(0) 推荐(0) 编辑
摘要:一维数组 首先是对于声明的变量的解释,代码如下:int a;int b[10]; a是一个标量(原先我也是不晓得为什么叫做标量),因为a是一个单一的值,b是数组,是一些值的集合。数组名是一个指向该数组内第一个元素类型的指针,但是数组跟指针是存在一些区别的。 1、数组是能确数量的元素。 2、数组名是常量指针,而指针是一个标量。 *在作为sizeof操作符和&操作符的操作数时,数组名不用指针常量来表示。1 int a[10];2 int b[10];3 int *c;4 ...5 c = &a[0];6 b = a;7 a = c; 第5行是合法的,c为指向数组a第一个元素的指针, 阅读全文
posted @ 2012-06-20 07:28 ahl5esoft 阅读(211) 评论(0) 推荐(0) 编辑
摘要:递归 C通过运行时堆栈支持递归函数。的哦贵函数就是直接或间接调用自身的函数。 递归函数所需要的2个特性: 1、存在限制条件,当符合这个条件时递归便不再继续。 2、每次调用之后越来越接近这个限制条件。 递归函数在实现方面更加接近问题的抽象定义,也更加清晰,然而在运行时的开销却是非常巨大的。 因此在某些情况下应该考虑用迭代来替代递归,使用递归的时候要慎重考虑。对于开销以及代码实现的清晰度上的抉择要慎重。可变参数 可变参数与C#的params很相似,但是C中是以省略号(...)来表示的,不同的地方是: 1、C中的可变参数必须从头到尾按顺序逐个访问。 2、可变参数没有... 阅读全文
posted @ 2012-06-19 06:53 ahl5esoft 阅读(165) 评论(0) 推荐(0) 编辑
摘要:指针算数运算 指针可以执行某些运算,但不是所有的运算都是合法的.指针加上一个整数后的结果还是指针. 如果指针加上1,对于所有的类型是否都是指向下一个字符呢?答案是否定的,这会根据指针指向的类型所决定,如:指向char类型的指针,则结果指向下一个字符;指向int类型的指针,则结果则是使指针加4(假设int类型占4个字符). 指针的算术运算只限于+/-,数组中的元素是连续存储的,因此对该指针进行加法元运算,则会使指针移动到相应的数组元素位置. 如果指针的位置在第一个元素之前或者最后一个元素之后,则是未定义,对该指针执行间接地址操作可能会失败. 指针的减法运算的结果是一种有符号的整数类... 阅读全文
posted @ 2012-06-18 07:05 ahl5esoft 阅读(209) 评论(0) 推荐(0) 编辑
摘要:该函数的原型如下:void rotate(void *front, void *middle, void *end) front、middle、end实际上是某个已经排好序的指针,并且指向数组的不同边界. 我们需要的的实现场景为假如一个有50个整型元素的数组,我们想把前面4个元素移动到数组的末尾.位置如图: 我们可以手动计算出A的字节数以及B的字节数,我们在实现的时候其实根本不用知道数组到底包含多少元素,但是函数仍然会以同样的方式进行字符的轮转.计算代码如下:int frontSize = (char *)middle - (char *)front;int backSize = (... 阅读全文
posted @ 2012-06-14 20:20 ahl5esoft 阅读(766) 评论(0) 推荐(0) 编辑
摘要:作用域、存储类型示例//默认链接属性,external,存储于静态内存int a = 5;//默认链接属性,其实extern是可以不要的,但是风格上加上关键字是有好处的,存储于静态内存extern int b;//因为加上了static,链接属性从external变为internal,源文件私有,存储于静态内存static int c;//默认链接属性,可以被任何文件调用,但是其他文件必须要有d的原型,如果加上static的话,就会变成源文件私有。对于函数而言代码都是存储在静态内存中的int d (int e){ //局部变量,自动存储类型,存储于堆栈,作用域仅限于该函数,每次函数调用都... 阅读全文
posted @ 2012-06-13 07:09 ahl5esoft 阅读(223) 评论(0) 推荐(0) 编辑
摘要:枚举类型 枚举类型就是指它的值为符号常量而不是字面值类型.符号名被当作整型常量处理,声明为枚举类型的变量实际上是整数类型。因此可以将任何整型变量赋值给枚举变量,但是应该避免这种方式使用枚举类型,因为把枚举变量同整数无差别的混合在一起使用,会削弱它们值的含义。浮点类型 浮点家族包括float、double和long double类型。ANSI标准仅仅规定long double至少和double一样,而double至少了float一样长,而读点类型至少能容容纳从10-37到1037之间的任何值。浮点数子面值默认情况下为double类型。指针 指针指示地址的另一个名字而已,指针变量就是一个其值... 阅读全文
posted @ 2012-06-12 07:25 ahl5esoft 阅读(219) 评论(0) 推荐(0) 编辑
摘要:本书的开头便给出了2页的源代码,并根据源代码对程序进行了解释、提示以及警告(需要注意以及容易出错的地方)。声明提示 对于需要在不同源文件中使用一些声明,可以在一个单独的文件中编写这些声明,然后用#include把这个文件复制到需要这些生命的源文件中,这样可以使用这些声明的一份拷贝,用不着在许多不同的地方进行的复制,避免了在维护这些代码时出错的可能性。函数scanf警告 1、由于scanf的实现原理,所有标量参数(整型和字符)都必须按地址传递(前面要加上'&'),如果没有这个符号的话,程序时无法正确运行的。 2、需要注意的是格式化的地方,它与函数printf的格式化方式较 阅读全文
posted @ 2012-06-11 07:13 ahl5esoft 阅读(190) 评论(0) 推荐(0) 编辑
摘要:这是我学习C语言的第一步,每天早上花1个小时学习,做一些练习,并整理一些学习的成果,虽然时间不算很多,但是实实在在的了解了C语言中的一些用法,例如:#include、#define、按位运算等。 特别是按位运算,当初C#学习的时候,偶然间在别人的代码中看到了,当时也不知道怎么搜索这些知识,但是开始学习C语言以后,也让我真正将把这些基础掌握了。 以前经常听别人说作为一个程序员应该学习几种语言,当初以为只要在一种语言专精,也能到达不错的程度,但是开始学习C语言之后,才发现万事开头难,只要自己愿意走出第一步去接触陌生的语言,从语言的语法、函数库到能编码出一些成品之后,对自己当前的语言的理解也... 阅读全文
posted @ 2012-06-10 21:30 ahl5esoft 阅读(240) 评论(0) 推荐(0) 编辑
摘要:对象和左值 对象是一个命名的存储区域,左值是引用了某个对象的表达式。指针和整数 指针可以加上或减去一个整型表达式。两个指向同一数组中同一类型的对象的指针可以进行减法,其结果被转换为整型。 指针可以转换为整型,但此整型必须足够大;所要求的大小依赖于具体的实现。整型对象可以显示的转换为指针。 指向某一类型的指针可以转换为指向另一类型的指针,但是,如果该指针指向的对象不满足一定的存储对其要求,则结果指针可能会导致地址异常。指向某对象的指针可以转换为一个指向具有更小或相同存储对齐限制的对象的指针。("对齐"概念依赖于具体实现) 指向函数的指针可以转换为指向另一个函数的指针。调用转换 阅读全文
posted @ 2012-06-08 06:53 ahl5esoft 阅读(221) 评论(0) 推荐(0) 编辑
摘要:格式化输入--scanf 输入函数scanf对应输出函数printf,它在与后者相反的方向上提供相同的转换功能,格式:1 int scanf(char *format, ...); 另外一个输入函数sscanf,它用于从一个字符串(而不是标准输入)中读取字符串,格式:int sscanf(char *string, char *format, arg1, arg2, ...); 它按照格式参数规定的格式扫描字符串string,并把结果分别保存到arg1、arg2、...这些参数中,scanf和sscanf的这些参数必须都是指针.文件访问 在读写一个文件之前,必须通过库函数fopen打开... 阅读全文
posted @ 2012-06-07 06:48 ahl5esoft 阅读(228) 评论(0) 推荐(0) 编辑
摘要:表查询 算法采用的是散列查询方法(哈希表),将输入的名字转化为一个很小的非负整数,该整数随后会将作为一个指针数组下标.数组的每个元素指向某个链表的表头,链表中的各个块用于描述具有该散列值的名字.如果没有名字散列到该值,则数组元素的值为NULL. 散列函数能是一个数据序列的访问过程更加迅速有效,这样能将数据元素更快的定位到.通常有以下几种方法:1、直接寻址法(H(key) = a + b * key);2、数字分析法;3、平方取中法;4、折叠法;5、随机数法;6、除留余数法.具体的信息可以参考维基百科.类型定义(typedef) C语言通过它来建立新的数据类型名,例如:typedef in... 阅读全文
posted @ 2012-06-06 06:37 ahl5esoft 阅读(236) 评论(0) 推荐(0) 编辑
摘要:此次为练习实践记录,讲解用纯C模拟一个C++的int类型的stack。 因为在纯C中没有class关键字,也没有public、private,但是有struct,现在已最接近的方式实现,声明如下:1 typedef struct2 {3 int *elements;4 int logicalLen;5 int allocLength;6 } Stack; 在纯C中typedef是必须的,但是在C++中是不必要的。从技术上来讲,以上3个域都是暴露在外的,都是隐含为public的。我们可以将Stack声明为局部变量,编译器知道这种类型占12字节,但是我们不应该直接操... 阅读全文
posted @ 2012-06-05 23:59 ahl5esoft 阅读(1276) 评论(0) 推荐(2) 编辑
摘要:指向结构的指针 对于指针和数组首先要注意:两个指针之间的加法运算是非法的,但是指针的剑法却是合法的。且对于数组arr而言,&arr[-1]是绝对非法的,对于&arr[n]的间接引用也是非法的。但是C语言的定义保证数组末尾的第一个元素,即&arr[n]的指针算术运算可以正确执行。 千万不要认为结构的长度等于各成员的长度的和。因为不同的对象有着不同的对其要求,所以结构中可能出现未命名的"空穴"(hole)。对于一下结构:1 struct {2 char c;3 int i;4 }; char占一个字符,int占4个字符,该结构可能占用的是8个字节而非5个 阅读全文
posted @ 2012-06-05 06:39 ahl5esoft 阅读(195) 评论(0) 推荐(0) 编辑
摘要:结构基本知识 结构是一个或者多个变量的集合,这些变量可以为不同的类型。ANSI标准在结构方面最主要的变化是定义了结构的赋值操作:拷贝、赋值、传递给函数、函数返回结构类型的值。 结构声明如下:View Code 1 struct point2 {3 int x;4 int y;5 }; 结构也可以跟其他的基本类型声明一样,如:View Code 1 struct {...} x, y, z; 我们可以使用以下的方式进行结构的初始化,如:View Code 1 struct point minPoint = {0, 0};2 //或者3 struct point minPo... 阅读全文
posted @ 2012-06-04 07:03 ahl5esoft 阅读(162) 评论(0) 推荐(0) 编辑
摘要:指向函数的指针 在C/C++语言中,函数本身不是变量,但可以定义指向函数的指针。这种类型的指针可以被赋值、存放在数组中、传递给函数以及作为函数的返回值等等。由于指向函数的指针还是实践的比较多,书中是以改写快速排序为例子的,现在呢,我们就来编写一个线性排序。 1 int lsearch(void *key, void *base, int n, int elementSize, int(*cmpfn)(void *, void *)) 2 { 3 for(int i = 0; i < n; i++) 4 { 5 void *elementAddress = (c... 阅读全文
posted @ 2012-06-01 07:36 ahl5esoft 阅读(184) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示