栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言指针传参与C++引用传参,以及尾插法建立单链表使用到的引用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言指针传参与C++引用传参,以及尾插法建立单链表使用到的引用

C语言指针传参与C++引用传参,以及尾插法建立单链表使用到的引用 先用传入数组做参
#include 
void sum(int *j){
    int i=0;
    while(i<4){
        j[0]+=j[i++];
    }
}
int main()
{
    int j[]={1,2,3,4};
    sum(j);
    printf("j[0] in main is %dn",j[0]);
    return(0);
}
输出:j[0] in main is 11

C中数组名就是指针,C中子函数用指针传参时,子函数会直接操作原值,而整形变量就不行,整形变量就不举例子了,看下面的如何用指针传参来改变原值

变量的指针传参
#include 
void sum(int *a,int *b){
  *a=33,*b=65;
  printf("nIn sum,a= %d",*a);
  printf("nIn sum,b= %d",*b);
}
int main()
{
  int a=32,b=64;
  int *pa,*pb;
  pa=&a;
  pb=&b;
  printf("nIn main,before sum,a= %d",a);
  printf("nIn main,before sum,b= %d",b);
  sum (pa,pb);
  printf("nIn main,after sum,a= %d",a);
  printf("nIn main,after sum,b= %d",b);
}

在sum函数中,需要用*a来操作原值(主函数的a),运行结果是

In main,before sum,a= 32
In main,before sum,b= 64
In sum,a= 33
In sum,b= 65
In main,after sum,a= 33
In main,after sum,b= 65

在gcc编译时,也就是用C语言编写时,定义sum时,只能用指针,不能用引用。用引用会报错。网上好多讲c语言引用传参的,坑死了

用g++编译时,才能用引用传参,也就是说C++才支持引用传递,C语言不支持!

引用传参具体怎么用呢?请看下面的例子,add函数是引用传参,调用时,直接把变量名传进去。add函数会直接操作原值,不会在内部拷贝一份

#include 
int add(int &x,int &y);
int main()
{
    int a=3,b=5;
    int sum=add(a,b);
    printf("sum=%dn",sum);
    return 0;
}
int add(int &x,int &y)
{
    x=x+1;
    y=y+1;
    return x+y;
}
sum=10
用尾插法建立单链表,并输出。

王道书的代码, 主要代码是C,但用到了C++的引用传参,需要用g++编译

#include 
#include 
typedef struct LNode{
  int data;
  struct LNode *next;
}LNode,*linkList;     //LNode指示单个的节点,linkList指示链表

void List_TailInsert(linkList &L){ 
  int x;
  L=(linkList)malloc(sizeof(LNode));
  LNode *s,*r=L;    //r为表尾指针
  scanf("%d",&x);   //输入结点的值
  while(x!=9999){   //输入9999表示结束
    s=(LNode *)malloc(sizeof(LNode));
    s->data=x;
    r->next=s;
    r=s;        //r指向新的表尾结点
    scanf("%d",&x);
  }
  r->next=NULL;
  //return L;
}

void show(linkList &L){
  LNode *p=L->next;
  int i=0;
  while(p!=NULL){
    printf("%dn",p->data);
    p=p->next;
  }
}

int main()
{
  linkList L1;
  List_TailInsert(L1);
  show(L1);
}
PS E:data-structure新建文件夹> g++ .3.尾插法使用引用.c
PS E:data-structure新建文件夹> .a.exe
1
2
3
4
9999
1
2
3
4
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号