当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: C语言处理数组的方式是它广受欢迎的原因之一。
 

 

 ·vc中特殊字体的实现    »显示摘要«
    摘要:ü 字体:渐变字、空心字、立体字、旋转字 渐变字: // 获得窗口的客户区设备上下文句柄 cclientdc dc(this); // 更改当前字体 logfont lf; dc.getcurrentfont()->getlogfont(&lf); cfont font, *poldfont; lf.lfcharset=134; lf.lfh......
 ·j2me开发环境安装指南    »显示摘要«
    摘要:要进行j2me的开发,首先必须要建立开发的平台,而在开发的平台选择上,有四种方案。 一、功能比较全的borland jbuilder平台(推荐使用) 搭建这个平台,我们必需要安装:jbuilder 7、jbuilder 8 或 jbuilder 9,borland 的 mobileset 3.1。可选材料有:(注意这些不是必须的,没有这些你也可以进行开发)你所想开发的手机sdk,例如......


数 组--C语言
c语言处理数组的方式是它广受欢迎的原因之一.c语言对数组的处理是非常有效的,其原因有以下三点:

    第一,除少数翻译器出于谨慎会作一些繁琐的规定外,c语言的数组下标是在一个很低的层次上处理的.但这个优点也有一个反作用,即在程序运行时你无法知道一个数组到底有多大,或者一个数组下标是否有效.ansi/isoc标准没有对使用越界下标的行为作出定义,因此,一个越界下标有可能导致这样几种后果: 【程序编程相关:面试时最经常被问到的问题(Frenque

【推荐阅读:面试时最经常被问到的问题(Frenque

    (1) 程序仍能正确运行; 【扩展信息:面试时最经常被问到的问题(Frenque

    (2) 程序会异常终止或崩溃;

    (3) 程序能继续运行,但无法得出正确的结果;

    (4) 其它情况.

    换句话说,你不知道程序此后会做出什么反应,这会带来很大的麻烦.有些人就是抓住这一点来批评c语言的,认为c语言只不过是一种高级的汇编语言.然而,尽管c程序出错时的表现有些可怕,但谁也不能否认一个经过仔细编写与调试的c程序运行起来是非常快的.

    第二,数组与指针能非常与谐地在一起工作.当数组出现在一个表达式中时,它与指向数组中第一个元素的指针是等价的,因此数组与指针几乎可以互换使用.此外,使用指针要比使用数组下标快两倍(请参见9.5中的例子).

    第三,将数组作为参数传递给函数与将指向数组中第一个元素的指针传递给函数是完全·

    等价的.将数组作为参数传递给函数时可以采用值传递与地址传递两种方式,前者需要完整地拷贝初始数组,但比较安全;后者的速度要快得多,但编写程序时要多加小心.c++与ansic中都有const关键字,利用它可以使地址传递方式与值传递方式一样安全.如果你想了解更多的细节,请参见2.4,8.6与第7章“指针与内存分配”开头部分的介绍.

    数组与指针之间的这种联系会引起一些混乱,例如以下两种定义是完全相同的:

    void f(chara[max])

    {

        /*...  */

    }

    void f(char *a)

    {    ·

        /*...  */

    }

    注意:max是一个编译时可知的值,例如用#define预处理指令定义的值.

    这种情况正是前文中提到的第三个优点,也是大多数c程序员所熟知的.这也是唯一一种数组与指针完全相同的情况,在其它情况下,数组与指针并不完全相同.例如,当作如下定义 (可以出现在函数说明以外的任何地方)时:

    char    a[max];

  系统将分配max个字符的内存空间.当作如下说明时:

    char   *a;

  系统将分配一个字符指针所需的内存空间,可能只能容纳2个或4个字符.如果你在源文件中作如下定义:

    char    a[max];

  但在头文件作如下说明;

    extern char   *a;

  就会导致可怕的后果.为了避免出现这种情况,最好的办法是保证上述说明与定义的一致性,例如,如果在源文件中作如下定义:

    char    a[max];

  那么在相应的头文件中就作如下说明,

    externchar    a[];

  上述说明告诉头文件a是一个数组,不是一个指针,但它并不指示数组a中有多少个元素,这样说明的类型称为不完整类型.在程序中适当地说明一些不完整类型是很常见的,也是一种很好的编程习惯.

    9.1  数组的下标总是从0开始吗?

   是的,对数组a[max](max是一个编译时可知的值)来说,它的第一个与最后一个元素分别是a[o]与almax-1).
...   下一页
 ·递归建立二叉树    »显示摘要«
    摘要:二叉树在数据结构中是很重要的,常规的建树是用一个队列来建,语句比较复杂,我在学习数据结构时编了一个递归建树的算法,语句比较简洁,算法如下: typedef struct node //二叉树结点的结构{ char ch; struct node *lchild, *rchild; 左指针和右指针}bitree; bitree * createbitree(){ char ch; bitr......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE