| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 517 人关注过本帖
标题:关于指针乱指。。。求分析
只看楼主 加入收藏
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
快速回复:关于指针乱指。。。求分析
数据加载中...
 
   



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

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