免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1652 | 回复: 9
打印 上一主题 下一主题

弱弱的问关于变量的初始化问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-30 10:04 |只看该作者 |倒序浏览
问大家一下,什么样的变量不初始化,然后使用会产生编译错误,为什么不初始化会产生错误,初始化的意义在于?

很迷惑,兄弟们解释一下,帮助一下小弟!

论坛徽章:
0
2 [报告]
发表于 2009-05-30 10:08 |只看该作者
指针有可能
如果你想引用一个随机的东西,可以不初始化

论坛徽章:
0
3 [报告]
发表于 2009-05-30 10:11 |只看该作者
不同的初始化值会产生不同的结果,但是可能你需要的只有一个,基本上都需要初始化,但是有时候因为可知的初始化值(比如全局变量可能是全0值),这时候如果你十分确定的话就可以不用,但是强烈不建议这么做

论坛徽章:
0
4 [报告]
发表于 2009-05-30 10:12 |只看该作者
关键是编译就提示:使用了没有初始化的变量L,这是L是一个我定义的结构体,我想知道哪些情况下是必须初始化的,不然就不能使用!

论坛徽章:
0
5 [报告]
发表于 2009-05-30 10:13 |只看该作者
恩,最好还是初始化好~~~

论坛徽章:
0
6 [报告]
发表于 2009-05-30 10:14 |只看该作者
是结构体一定要初始化吗?比如链表啊,栈啊,等等!
不清楚!

论坛徽章:
0
7 [报告]
发表于 2009-05-30 10:24 |只看该作者
原帖由 iwaich 于 2009-5-30 10:12 发表
关键是编译就提示:使用了没有初始化的变量L,这是L是一个我定义的结构体,我想知道哪些情况下是必须初始化的,不然就不能使用!

编译器实在没有初始化而直接使用的时候就会提示,至于哪些情况下必须初始化,我的建议是:always

论坛徽章:
0
8 [报告]
发表于 2009-05-30 10:26 |只看该作者
我不是想知道好不好,我是想知道他的原理,比如利用以下方式初始化一个链表就会出错
....
....
typedef                struct        Node        /*结点类型定义*/
{
        char       use[10];
        int                x;
    int                y;
        struct                Node*                next;
}   Node,                *Linklist;


void Initlist(Linklist         L)        /*初始化链表*/
{   
       L=(Linklist)malloc(sizeof(Node));
       
  L->next=NULL;
}
void main{
Linklist L;
        Initlisty(L);       //这个地方出错,说使用了没有初始化的变量L
...
...
       }

可以这样改正,实际上书上都是这么写的
....
....
typedef                struct        Node        /*结点类型定义*/
{
        char       use[10];
        int                x;
    int                y;
        struct                Node*                next;
}   Node,                *Linklist;


void Initlist(Linklist        *L)        /*初始化链表*/
{   
      *L=(Linklist)malloc(sizeof(Node));
       
  (*L)->next=NULL;
}
void main{
Linklist L;
        Initlist(&L);   
....
....   

       }


但是为什么呢?想知道它的实质!

论坛徽章:
0
9 [报告]
发表于 2009-05-30 11:46 |只看该作者
初始化数据结构和初始化变量是两码事。
书上不可能没有代码,清华的版本就有,别的也应该有。

论坛徽章:
0
10 [报告]
发表于 2009-05-30 12:33 |只看该作者
其实个人觉得都是给定一个初始状态,这一点是一样的,只不过初始化数据结构可能还涉及到资源分配等操作
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP