标题:C语言中引用传递的实例,看着简单,却无法编译!
只看楼主
潺潺的小河
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2019-3-2
结帖率:66.67%
已结贴  问题点数:20 回复次数:9 
C语言中引用传递的实例,看着简单,却无法编译!
#include<stdio.h>
void sw(int& a);//(1)
void main()
{
   int  a=1;
   sw(a);
   printf("%d",a);
}
void sw(int& a)
{
  a++;
 }
 文件为“.c"形式。编译器说 (1)处有问题。请帮我看看。

搜索更多相关主题的帖子: C语言 引用 编译 void int 
2019-03-02 22:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
c语言没有“引用”
2019-03-02 23:41
潺潺的小河
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2019-3-2
得分:0 
回复 2楼 rjsp
这个文件就可以使用 引用传递。
#include"stdio.h"
#include"stdlib.h"
#define STACK_INIT_SIZE 100
#define STACKINCREAMENT 10
typedef char SElemType;
typedef struct {
    SElemType *base;
    SElemType *top;
    int stacksize;
}SqStack;

void InitStack(SqStack &s);
void Push(SqStack &s,SElemType e);
void showStack(SqStack s);
int GetLength_Stack(SqStack s);
void Pop(SqStack &s,SElemType &e);
void GetTop(SqStack s,SElemType &e);
int  StackEmpty(SqStack s);

void main()
{
   SqStack s;
   SElemType e;
   InitStack(s);
   Push(s,'s');
   Push(s,'h');
   Push(s,'g');
   showStack(s);
   GetTop(s,e);
   printf("%c",e);
   showStack(s);
}

void InitStack(SqStack &s)
{
    s.base=(SElemType*)malloc(sizeof(SElemType)*STACK_INIT_SIZE);
    if(!s.base) exit(1);
    s.top=s.base;
    s.stacksize=STACK_INIT_SIZE;
}

void Push(SqStack &s,SElemType e)
{
    if(s.top-s.base>=s.stacksize)
    {
        s.base=(SElemType*)realloc(s.base,(STACK_INIT_SIZE+STACKINCREAMENT)*sizeof(SElemType));
        s.stacksize=STACK_INIT_SIZE+STACKINCREAMENT;
    }
    if(!s.base)exit(1);
    *s.top++=e;
   
}
void showStack(SqStack s)
{
     printf("显当前顺序栈内的数据\n");
     while(s.top!=s.base)
     {
         printf("%c\t",*(--s.top));
     }
}
int GetLength_Stack(SqStack s)
{
   int num=0;
   while(s.top!=s.base)
   {
       --s.top;
         num++;
     }
   return num;  
}

void Pop(SqStack &s,SElemType &e)
{
    if(s.base==s.top)
    {
      printf("空栈\n");
      exit(1);
    }
    e=*(--s.top);
}
void GetTop(SqStack s,SElemType &e)
{
     if(s.base==s.top) exit(1);
     e=*(s.top-1);
}
int  StackEmpty(SqStack s)
{
    if(s.base==s.top)
        return 1;
    else
        return 0;
}


但是 我不知道这个文件 为什么用使用成功
2019-03-03 08:52
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:7 
C中貌似没有int&这个类型,把int&改为int*,然后向子函数传递a的地址即&a
2019-03-03 09:18
潺潺的小河
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2019-3-2
得分:0 
回复 4楼 lxk1732942
C++里有引用传递概念;可以帮忙解释上面第二个C程序 为什么可以通过编译吗;因为我不能理解,就做了一个对比实验;对比试验我更迷糊了
2019-03-03 10:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
能编译通过是你用的c++吧?
2019-03-03 10:46
潺潺的小河
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2019-3-2
得分:0 
回复 6楼 rjsp
".c"文件。您可以试试 我那个文件
2019-03-03 19:41
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
得分:7 
经过尝试。两份代码都不能通过编译,都提示语法错误,在引用的位置。
我用的是vs2015里的cl

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2019-03-04 16:08
潺潺的小河
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2019-3-2
得分:0 
回复 8楼 waterstar
我使用是visual c++ 6.0的版本   

没问题呀!
2019-03-04 18:39
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
得分:0 
回复 9楼 潺潺的小河
你看看你的文件后缀,是.cpp

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2019-03-07 13:07



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




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

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