当前位置: 首页 > news >正文

广州市住房和城乡建设委员会网站6seo资料网

广州市住房和城乡建设委员会网站6,seo资料网,wordpress开发小工具栏,wordpress分页美化1 C中指针与引用的区别 引用相当于起别名int m; int &n m;n 相当于 m 的别名(绰号),对 n 的任何操作就是对m的操作。 所以 n 既不是m的拷贝,也不是指向 m 的指针,其实n就是 m 它自己。 引用的注意事项&#xff…

1 C++中指针与引用的区别

引用相当于起别名
int m;
int &n = m;

n 相当于 m 的别名(绰号),对 n 的任何操作就是对m的操作

所以 n 既不是m的拷贝,也不是指向 m 的指针,其实n就是 m 它自己


引用的注意事项:

1 引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)
2 不能有 NULL 引用,引用必须与合法的存储单元关联(指针则可以是 NULL)
3 一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)

例如:

int i = 5;
int j = 6;
int &k = i;
k = j; //将k和i的值都变为了6

语句 k = j 并不能将 k 修改成为 j 的引用,只是把k的值改变成为 6。

由于 k 是 i 的引用,所以i的值也变成了 6。


引用的主要功能是传递函数的参数和返回值。

C++ 语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。

1 值传递:

void Func1(int x) 
{ x = x + 10; 
} 
... 
int n = 0; 
Func1(n); 
cout << "n = " << n << endl; // n = 0 

2 指针传递:

void Func2(int *x) 
{ (* x) = (* x) + 10; 
} 
... 
int n = 0; 
Func2(&n); 
cout << "n = " << n << endl; // n = 10

3 引用传递:

void Func3(int &x) 
{ x = x + 10; 
} 
... 
int n = 0; 
Func3(n); 
cout << "n = " << n << endl; // n = 10

x 和 n 是同一个东西,改变 x 等于改变 n


2 C++指针的引用*&

如果想:在一个函数中修改指针的指向,并且在退出函数后这种操作保留,就需要使用指针的引用

#include <iostream>
using namespace std;struct point {int x;int y;
};void changenum1(point *&pnum) { //point *&pnum表示指向point类型的指针的引用,即point*类型变量的引用pnum = new point;pnum->x = 4;
}void changenum2(point *pnum) {pnum = new point;pnum->x = 4;
}void test1() {point *num = new point;num->x = 10;changenum1(num);std::cout << "指针引用" << num->x << endl;
}void test2() {point *num = new point;num->x = 10;changenum2(num);std::cout << "指针" << num->x << endl;
}int main() {cout << "开始执行程序" << endl;test1();test2();cout << "执行程序完毕" << endl;return 0;
}
point *&pnum:
表示指向point类型的指针的引用(即point* 类型变量的引用)point *&pnum = point* &pnum(比较好理解)

3 题目

设计在单链表中删除值相同的多余结点的算法

算法:

typedef struct list
{int data;struct list *next;
}LNode;void deleteLike(LNode* &head)
{LNode *p,*q,*s;for(p=head;p!=0;p=p->next){for(q=p->next,s=q; q!=0; )if (q->data==p->data) //删除相同值的节点 {s->next=q->next; free(q);q=s->next;}else{ s=q;q=q->next;}}
}

完整代码:

#include<stdio.h>
#include<stdlib.h>#define N 10typedef struct list
{int data;struct list *next;
}LNode;void deleteLike(LNode* &head)
{LNode *p,*q,*s;for(p=head;p!=0;p=p->next){for(q=p->next,s=q; q!=0; )if (q->data==p->data) //删除相同值的节点 {s->next=q->next; free(q);q=s->next;}else{ s=q;q=q->next;}}
}LNode *creatlist(int *a)
{LNode  *h,*p,*q;      int  i;h=p=(LNode *)malloc(sizeof(LNode));for(i=0; i<N; i++){q=(LNode *)malloc(sizeof(LNode));q->data=a[i];  p->next=q;  p=q;}p->next=0;return h;
}void outlist(LNode  *h)
{LNode  *p;p=h->next;if (p==NULL)  printf("\nThe list is NULL!\n");else{printf("\nHead");do {printf("->%d",p->data);  p=p->next;    } while(p!=NULL);printf("->End\n");}
}int main( )
{     LNode *A; int a[N]={1,3,4,1,10,3,4,8,6,8};A=creatlist(a);deleteLike(A);outlist(A);return 0;
}
http://www.tj-hxxt.cn/news/123843.html

相关文章:

  • 成都百度网站排名优化seo裤子的关键词首页排名有哪些
  • 在百度上做个网站要多少钱网站排名seo
  • 厦门海沧建设局网站新媒体营销推广方案
  • 美食网站首页怎么做百度广告买下的订单在哪里找
  • 做word文档什么网站好sem
  • 网站开发需要多少钱点评列举五种网络营销模式
  • 做电子元器件的网站艺术培训学校招生方案
  • 娱乐城网站模板晋城网站seo
  • 外贸公司网站模板免费微信广告平台推广
  • 56度卫星有几个成人节目呢搜索引擎优化的英语简称
  • 建设银行北京分行网站营销培训方案
  • 潍坊做网站建设常用的网络营销方式
  • 做游戏网站需要多少钱广告投放数据分析
  • 制服定制合同刷移动端seo软件
  • 新乡专业做网站国际新闻
  • 域名申请备案东莞seo网络优化
  • 网站开发排行杭州seo推广公司
  • 珠海左右创意园网站开发优化公司怎么优化网站的
  • 怎么查看网站收录整站优化seo
  • 邯郸网站开发公司百度广告关键词价格表
  • webpack 网站免费淘宝关键词工具
  • 网站 体系深圳最新新闻事件今天
  • 建筑网校排名前十大品牌企业网站优化的三层含义
  • 家庭厨房做外卖网站投广告的平台有哪些
  • 重庆模板网站哪个好热狗seo外包
  • 家装平台都有哪些seo百度点击软件
  • 安远网站建设互联网运营培训课程
  • 公司官网网站建设想法百度账号出售平台
  • 网站美工色彩搭配网站设计公司
  • 招聘网站可以做两份简历吗如何创建一个自己的网站