读书人

养成C编程良好习惯(不断更新.)

发布时间: 2012-11-08 08:48:12 作者: rapoo

养成C编程良好习惯(不断更新.......)

兴哥教你学高质量编程

在C语言编程中,要养成良好的编程习惯。在这里举出多个例子,在这些例子中,有写是可以运行的,但我们还是应该尽力避免这些。不断更新中。。。争取每星期抽点时间写几个

例一、不要反回局部变量地址

#include <stdio.h>

int *test(void)

{

int i=10;

return &i;

}

int main()

{

int *p;

p=test();

printf("*p=%d",p);

return 0;

}

讲解:此函数可以有正常运行,但是我们还是要避免这种返回局部变量的地址的错误。很简单,子函数返回后,i不在存在,一旦原来的i地址的

内存被重新分配,那p所指向空间的内容就不在是我们原来所需要的了。

例二、避免局部变量分配空间过大。

void subfunction()

{

int aaa[60][250][1000];

}

说明:上面的情况显然不可取,aaa的大小在60M这个样子,局部变量是分配在栈中间的,尤其在单片机,嵌入式等的微内存处理器编程中,必须避免这种情况。编译时候估计就直接报错了,呵呵

例三、申请堆空间后要释放。

void subfunction()

{

char *p;

char *q;

p=malloc(120);

q=malloc(22);

rerurn p;

}

说明:在堆空间中申请的内存空间,在使用完后要及时的释放,虽然程序运行完以后,会有系统进行释放,但我们绝对不建议这么做,这将造成内存空间的浪费,与内存使用的不连续情况的出现,导致程序运行的效率低下。

例四、申请堆空间后要释放。

我们在TurboC2.0中编译:
#include "stdio.h"
fun()
{
return1;
}
main()
{
printf(/"%d/",fun(2));
getchar();
}
编译正确且输出1,这说明,在C语言中,可以给无参数的函数传送任意类型的参数。但是看看c++的情况

在C++语言中声明一个这样的函数:
intfunction(void)
{
return1;
}
则进行下面的调用是不合法的:
function(2);
因为在C++中,函数参数为void的意思是这个函数不接受任何参数。
但是在C++编译器中编译同样的代码则会出错。在C++中,不能向无参数的函数传送任何参数,出错提示“’fun’:functiondoesnottake1parameters”。

说明:无论在C还是C++中,若函数不接受任何参数,一定要指明参数为void。防止上面turbor中那个例子出现的情况。

读书人网 >编程

热点推荐