标题:为什么在C++运行出来,将&去掉在C中却运行不出来
只看楼主
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
结帖率:100%
已结贴  问题点数:20 回复次数:29 
为什么在C++运行出来,将&去掉在C中却运行不出来
#include<stdio.h>
#include<stdlib.h>

typedef struct zhan{
    int data;
    struct zhan *next;
}zhan,*ZhanL;

/**
 * 初始化栈
 * */
ZhanL initZhan(){
    ZhanL L =(ZhanL)malloc(sizeof(zhan));
    L->next=NULL;
    return L;
}

/**
 * 进栈操作
 * */
int push(ZhanL &L,int data){
    //创建一个新的结点
    ZhanL p=(ZhanL)malloc(sizeof(zhan));
    p->data=data;
    p->next = L;
    L = p;
    return 0;
}
int pop(ZhanL &L){
    if(L->next){
        ZhanL s=L;//释放空间用
        printf("%d ",s->data);
        L = L->next;
        if(L->next){// printf("栈顶%d \n",L->data);
        } else{
            printf("栈空\n");
        }
        free(s);
    }
    return 0;
}



/**
 * 转换方法
 * */
 int zhuanhuan(ZhanL &L,int data,int jz){
     while (data){
         push(L,data%jz);
         data = data/jz;
     }

     while (L){
         pop(L);
     }
    return 0;
 }


 int main(){
    ZhanL L;
    L=initZhan();
    printf("请输入一个十进制数");
    int data,jz;
    scanf("%d",&data);
    printf("请输入转换的进制");
    scanf("%d",&jz);
    zhuanhuan(L,data,jz);
    return 0;
}
搜索更多相关主题的帖子: 运行 return int data next 
2020-03-24 20:14
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
大佬求解
2020-03-24 20:19
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:10 
回复 楼主 牵绊绊
他&代表地址符号,代表直接用这里函数中的变量更改调用时的变量。去掉当然就代表不替换了

2020-03-24 20:25
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 3楼 return_0什么意思,只是想把它改成C语言,总是运行不出来

#include<stdio.h>
#include<stdlib.h>

typedef struct zhan{
    int data;
    struct zhan *next;
}zhan,*ZhanL;

/**
 * 初始化栈
 * */
ZhanL initZhan()
{
    ZhanL L =(ZhanL)malloc(sizeof(zhan));
    L->next=NULL;
    return L;
}

/**
 * 进栈操作
 * */
int push(ZhanL L,int data)
{
    //创建一个新的结点
    ZhanL p=(ZhanL)malloc(sizeof(zhan));
    p->data=data;
    p->next = L;
    L = p;
    return 0;
}
int pop(ZhanL L)
{
    if(L->next){
        ZhanL s=L;//释放空间用
        printf("%d ",s->data);
        L = L->next;
        if(L->next)
        {
        //    printf("%d \n",L->data);
        }
        else
        {
            printf("栈空\n");
        }
        free(s);
    }
    return 0;
}
/**
 * 转换方法
 * */
 int zhuanhuan(ZhanL L,int data,int jz)
 {
     while (data)
     {
         push(L,data%jz);
         data = data/jz;
     }
     while (L)
     {
         pop(L);
     }
    return 0;
 }
 int main()
 {
    ZhanL L;
    int data,jz;
    L=initZhan();//初始化
    printf("请输入一个十进制数\n");  
    scanf("%d",&data);
    printf("请输入转换的进制\n");
    scanf("%d",&jz);
    zhuanhuan(L,data,jz);
    return 0;
}
2020-03-24 20:28
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
你用那个ide?

2020-03-24 20:42
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
回复 4楼 牵绊绊
或者你运行不出来是什么个情况(编译错误?)

2020-03-24 20:43
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
还有,自定义栈我不建议把函数写在外面,我喜欢在结构体里写成员函数

2020-03-24 20:46
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 6楼 return_0编译没显示错误
我试过了,只是在这一段代码时有问题,不知是函数调用的方式不对,还是有其他的错误呢?
{
            printf("栈空\n");
}
2020-03-24 20:50
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 

while (L)
     {
         pop(L);
     }
这一段有问题,不是是什么问题
2020-03-24 20:53
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
回复 8楼 牵绊绊
printf好像不能打出中文字符

2020-03-24 20:54



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




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

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