使用sizeof()为你的程序有更好的兼容性

由经验七,不难得出另一个值得我们注意的问题:不要以为我们经常指针类型的长度是2个字节,那在就任何时候也都是2个字节.这是一种定性思维.作为一个合格的程序员应该养成一个好的习惯,一个不把往常接触到的情况看成现在也是这样的情况的习惯.有时编译模式有变,有时编译器的不同也会有所不同.如在TC2.0下整型变量长度为2个字节而在VC++6.0中是4个字节.那么有没有一种方法,可以在不同编译模式或不同编译器的通用的方法呢.只要大家想一下,就有了.大家还记得,我们在前面的经验介绍中用到了sizeof()这个函数.它的作用测定变量或某一类型的长度.当我要用为一个指向字符类型的指针申请能存放10个字符的内...

#define NULL 0 使用的好坏

在TC2.0下编程,不要为了省麻烦,在程序的开头以#define NULL 0 来代替#include<stdio.h>.我不是说这种方法不好,反而我认为用到非常妙,因为在程序中可以减少不必要的外部函数的连接,从而减少程序的负担.但是,用#define NULL 0也得有下前提,就是编译器的模式(Model)是Tiny,Small,Medium.那么为什么在Compact,Large,Huge下不行呢.我举一例子,代码如下:#include<stdio.h>#include<conio.h>int main(void){ clrscr(); printf("%d",sizeof(in...

小心使用malloc()函数

经验五中用到malloc()函数,我就不得不说一说它了.我在此不得不提醒大家一下:malloc()函数不是你想象中那么好用的.在此,我就说一下本人在用malloc()函数遇到的麻烦.代码的形式大概如下:#include<stdio.h>#include<conio.h>int main(void){...char **pointer=NULL;char string[2]={1,2};char string1[3]={1,2,3};char string2[4]={1,2,3,4};... pointer=(char**)malloc(sizeof(char*)*3);pointer[...

多级指针的使用

在此,我想为大家谈一谈多级指针的使用问题.我本想不要浪费篇幅来谈多级指针.它对那些使用过的人来说很容易,但对于刚学的人并不那顺手.当初,我在学的时侯,也不是很明白.所以才拿出来谈一谈.还是先给一个例子吧.当程序设计要求:建立一个三级指针变量来管理学生姓名,其二级指针指向一个班,一级指针指向学生姓名.要求就是这么多,大家可以略微思考一下.从要求中可以分析:我们无法知道一个学校有多少个班和每一个班中有多少名学生.那么应该怎样做呢.可以用宏定义#define SCHOOL_CLASS_NUM 50来说明学校拥有多少个班.可以用一个整型数组student_NUM[SCHOOL_CLASS_NUM...

函数调用时参数传入的顺序 小谈

在函数的调用时需要注意参数的传入的顺序.我可以给一个例子:#include<stdio.h>#include<conio.h>int main(void){ int i=0; clrscr(); printf("%d,%d",i++,i++); getch(); return 0;}printf()函数是我们在编程时用得比较多的函数.大家不妨运行一下,得出程序的结果.(结果在此不予给出)从结果可以看出参数的传递相当于:printf("%d,%d",1,0);也就是说先从最后一个参数开始传递.可以得出程序中printf()的执行过程:printf("%d,%d",i++,i++)...

#define 优越性畅谈

在编写程序时,尽量不使用确切的数字,而使用#define 来宏定义这些数据.否则将会给程序的维护带来巨大困难和使用程序变得毫无生机和活力.例如:我们要使用一个字符型全局数组变量,变量名为array.首先我们应该确定数组的大小,例如大小为500可以这样定义:char array[500];也可以这样定义:#define MaxArrayLen (500)char array[MaxArrayLen];如果在程序中需要判断数组是否会越界使用,可以分别用500/MaxArrayLen来参照. 假如我们有必要使用数组的容量增大至600,使用第一种方法需要在程序中一个一个地去改.如果程序大,可想...

if/else需要注意的地方

在有if/else这样的语句时,希望不要图省事而不去写一对大括号"{}".除非你对不使用大括号而带来的结果非常有信心.我得举一个例子让大家明白我说的不是一堆废话.#include "stdio.h"#include "conio.h"int main(void){ int i,j; clrscr(); scanf("%d,%d",&amp;i,&amp;j); if(i>0) if(i>10) printf("i>10\n"); else printf("i>0 &amp;&amp; i<=10\n"); else if(i<-10) ...