| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 799 人关注过本帖
标题:栈初始化问题
只看楼主 加入收藏
rs369007
Rank: 2
等 级:论坛游民
帖 子:30
专家分:11
注 册:2009-2-25
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:1 
栈初始化问题
疑问:在学习数据结构(参考高教社 和严蔚敏两版),有个疑问,各种数据结构 初始化函数里几乎都没有对指向数据结构的指针本身初始化,编译也不会报错(TC 还有Cfree编译均能通过)
学习指针,都强调指针必须初始化,才能使用,但是在指针作为参数传递时,似乎却不管用了

typedef struct Node{
     int data;
     struct Node *next;
}LinkQueueNode;

typedef struct{
    struct Node *front;
    struct Node *rear;
}LinkQueue;

初始化链队函数里  直接 Q->font= ..malloc(..);  并没对Q进行初始化

又如栈初始化函数,也并没有对S初始化,但是确实正确的
Void InitStack(Seqstack *S)
{
    S->top=-1;
}

下面程序展示了小弟的疑问,小弟那里理解错了,还望达人指点
#include<stdio.h>
#include<stdlib.h>
typedef struct{
    char elem[10];
    int top;
}Seqstack;//栈存储结构

void InitStack(Seqstack *S)          ——>改成:                  void InitStack(Seqstack *S)         
{                                                                 {
    Seqstack *P;                                                          S->top=-1;//这样却能通过编译 难道这里S被编译器自动初始化了吗
    P->top=-1;//这里会出现内存写错误(cfree 会报错)              }                                          
}
main()
{
    Seqstack *S;
    InitStack(S);
                                                                        printf("%d ",S->top);
    system("pause");
    return 0;
}



[ 本帖最后由 rs369007 于 2009-11-1 19:22 编辑 ]
2009-11-01 17:30
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:10 
    LZ油菜,能够想到那么深,C语言里貌似不管是什么变量都要进行初始化来分配内存,不声明不行,但在定义函数的时候,形参已经相当于函数中定义的变量,调用函数传递参数的过程相当于定义形参变量并且用实参的值来初始化。可能是函数名那里的Seqstack *S已经进行了吧。
    呵呵,一点拙见,和LZ一起探讨····
2009-11-01 20:16
快速回复:栈初始化问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016250 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved