标题:关于指针乱指。。。求分析
只看楼主
dingzy2010
Rank: 2
等 级:论坛游民
帖 子:14
专家分:20
注 册:2012-4-15
结帖率:100%
已结贴  问题点数:10 回复次数:3 
关于指针乱指。。。求分析
#include<iostream>
using namespace std;
#define STACK_INIT_SIZE  100
#define    STACKINCREMENT   10
typedef struct
{
    int *base;
    int *top;
    int stacksize;
}SqStack;

/*初始化一个栈*/
void InitStack(SqStack *S)
{
    S->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
    if(!S->base) exit(0);
    S->top=S->base;
    S->stacksize=STACK_INIT_SIZE;
}

/*压栈操作,把元素e压入栈中*/
void Push(SqStack *S,int e)
{
    if(S->top-S->base>=S->stacksize)
    {
        S->base=(int *)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(int));
        if(!S->base) exit(0);
        S->top=S->base+S->stacksize;
        S->stacksize=S->stacksize+STACKINCREMENT;
    }
    *(S->top++)=e;
}

/*出栈操作,把栈顶元素弹出栈*/
int Pop(SqStack *S,int e)
{
    if(S->base==S->top)
        exit(0);
    e=*(--S->top);
    return e;
}

/*取得栈中元素的个数*/
int  GetNumber(SqStack S)
{
        return  (S.top)-(S.base);
}

void main()
{
   int bitNumber,tenNumber=0,n,count=0,s=0;
   int i,j;
   cout<<"二进制:"<<endl;
   SqStack stack;//?????
   InitStack(&stack);//????
}
最后带?????的地方  若是改成Sqstack *stack;InitStack(stack);会产生指针乱指错误。。。。为什么????

搜索更多相关主题的帖子: void top include 元素 
2012-04-17 22:34
ran5515
Rank: 2
等 级:论坛游民
帖 子:11
专家分:20
注 册:2012-4-13
得分:5 
指针我不太熟,但我想,Sqstack *stack就是定义一个可以指向Sqstack
的指针,但并没分配区域(如果分配了的话,malloc函数不就没意义了吗)
所以,反观Initstack函数,S->base就没有意义了吧。
只是我的见解。
2012-04-17 22:52
ran5515
Rank: 2
等 级:论坛游民
帖 子:11
专家分:20
注 册:2012-4-13
得分:0 
完了,把我忽略吧
2012-04-17 22:59
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:5 
回复 楼主 dingzy2010
最后带?????的地方  若是改成Sqstack *stack;InitStack(stack);会产生指针乱指错误。。。。为什么????

Sqstack *stack;  
stack是个指针变量, 要给它初始化(分配个可以操作的地址) 然后调用就ok啦


Sqstack *stack = (Sqstack*) malloc (sizeof(Sqstack));
InitStack(stack);
这只是一种修改的方式
2012-04-17 23:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-366045-1-1.html




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

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