9、变量的初始化

原创 2004年10月12日 00:18:00

————————
接上一条,变量一定要被初始化再使用。C/C++编译器在这个方面不会像JAVA一样帮你初始化,这一切都需要你自己来,如果你使用了没有初始化的变量,结果未知。好的程序员从来都会在使用变量前初始化变量的。如:

    1) 对malloc分配的内存进行memset清零操作。(可以使用calloc分配一块全零的内存)
    2) 对一些栈上分配的struct或数组进行初始化。(最好也是清零)
   
不过话又说回来了,初始化也会造成系统运行时间有一定的开销,所以,也不要对所有的变量做初始化,这个也没有意义。好的程序员知道哪些变量需要初始化,哪些则不需要。如:以下这种情况,则不需要。
       
        char *pstr;  /* 一个字符串 */
        pstr = ( char* ) malloc( 50 );
        if ( pstr == NULL ) exit(0);
        strcpy( pstr, "Hello Wrold" );

但如果是下面一种情况,最好进行内存初始化。(指针是一个危险的东西,一定要初始化)

        char **pstr;  /* 一个字符串数组 */
        pstr = ( char** ) malloc( 50 );
        if ( pstr == NULL ) exit(0);
       
        /* 让数组中的指针都指向NULL */
        memset( pstr, 0, 50*sizeof(char*) );
       
而对于全局变量,和静态变量,一定要声明时就初始化。因为你不知道它第一次会在哪里被使用。所以使用前初始这些变量是比较不现实的,一定要在声明时就初始化它们。如:

    Links *plnk = NULL;  /* 对于全局变量plnk初始化为NULL */

没有躲过的坑--程序中的变量未初始化

变量未初始化是C++编程中最为常见和易犯的错误之一。但是对于全局变量,我们可以不进行初始化,这个变量会默认的用零进行初始化,但是这通常不是一个好的习惯。我们今天先不探讨全局变量还是静态全局变量。那么对...
  • wangshubo1989
  • wangshubo1989
  • 2015年11月21日 14:44
  • 11817

C与C++变量的初始化

C语言的默认初始化值: 1)全局变量存放在全局数据区,由编译器建立,如果在定义的时候不做初始化,系统会将其自动初始化,数值型为0,字符型和指针变量会自动赋值为NULL。静态变量和全局变量类似。而非静态...
  • qq_33774935
  • qq_33774935
  • 2016年09月02日 11:10
  • 310

变量为什么要进行初始化?

内存是在操作系统的统一管理下使用的! 1、软件在运行前需向操作系统申请存储空间,在内存空闲足够时,操作系统将分配一段内存空间并将外存中软件拷贝一份存入该内存空间中,并启动该软件的运行; 2、在软件运行...
  • LNF_2373837248
  • LNF_2373837248
  • 2015年11月24日 00:02
  • 2112

KEIL里变量初始化问题,

在有些C语言书籍里定义一个变量可以同时付初值,如 int   a=0; 但是这次LCM程序里汉字总是颠倒显示,查了很多可能的原因,最后发现一个全局变量时这样定义的,int old_uc_g_...
  • niepangu
  • niepangu
  • 2013年09月13日 14:20
  • 892

变量初始化规则以及声明和定义

当我们定义没有初始化式的变量的时候,系统有时候会帮我们初始化变量.系统提供什么样的值取决于变量的类型,也取决于变量定义的位置.内置类型变量的初始化.内置类型变量是否自动初始化取决于变量定义的位置.在函...
  • cool_mirror
  • cool_mirror
  • 2007年07月08日 16:53
  • 3236

建议对php变量进行初始化、用完后清空

我们知道, 在php中, 变量不需要提前定义, 想用就用即可。 从我写php代码的经验来看, 建议对php变量进行初始化、用完后清空, 能避免很多串扰问题。 踩过太多的坑了。 C/C+...
  • stpeace
  • stpeace
  • 2016年12月10日 15:19
  • 4016

Java____变量的初始化与赋值相关

Java的赋值和初始化包括很多容易被忽视的地方,在此分类总结如下: 1.和赋值相关: 基本类型的赋值运算需要注意的是赋值时的类型转换问题,什么时候可以自动转换,什么时候需要强制类型转换是需...
  • u010241120
  • u010241120
  • 2015年10月08日 13:59
  • 1228

java中变量未初始化

java中的变量未初始化,会出现什么问题呢,如果是基本数据类型,则会有初始值,如果不是,则一般是null,以下为测试结果 public class Test { String str; int ...
  • lsx991947534
  • lsx991947534
  • 2015年05月22日 18:53
  • 2392

java初始化变量的问题

------------------------------------------------------------- //在启动类的主函数中定义的变量 -> 局部变量 class A{ pub...
  • u013078986
  • u013078986
  • 2014年02月14日 23:27
  • 806

启动代码中关于变量的初始化

对于一个标准C程序所用到的全局和静态变量都是定位在固定的内存空间,在程序启动时必须赋予确定的数值,对于程序中没有赋初值的变量,编译器默认赋值为0。对于__no_init限定的变量则不会被初始化。 对于...
  • sunheshan
  • sunheshan
  • 2015年09月20日 12:38
  • 1020
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:9、变量的初始化
举报原因:
原因补充:

(最多只允许输入30个字)