指针浅谈
来源:互联网 发布:简单网络架构图 编辑:程序博客网 时间:2024/05/17 20:35
主要介绍的是:①指针与引用在函数参数传递时的比较。②指针与数组的关系。
⑴函数可以说是任何程序设计语言必不可少的组成部分。一种语言如果会有更好的机制来支持函数实现,可以说该种语言就会有更大的生机。(一家之言)
C++函数的参数传递有三种方式:①值传递②指针传递③引用传递。以下的代码中调换两数的函数中,swap_1()用的是值传递方式、swap_2()用的是指针
传递方式、swap_3()用的是引用传递方式。从测试结果可以看出只有swap_1()没能对换两数。
代码如下:
- #include<iostream>
- using namespace std;
- void swap_1(int a,int b)
- {
- int temp;
- temp=a;
- a=b;
- b=temp;
- }
- void swap_2(int *a,int *b)
- {
- int temp;
- temp=*a;
- *a=*b;
- *b=temp;
- }
- void swap_3(int &a,int &b)
- {
- int temp;
- temp=a;
- a=b;
- b=temp;
- }
- int main()
- {
- int a1=3,b1=6;
- int a2=3,b2=6;
- int a3=3,b3=6;
- cout<<"值传递:";
- swap_1(a1,b1);
- cout<<a1<<" "<<b1<<endl;
- cout<<"指针传递:";
- swap_2(&a2,&b2);
- cout<<a2<<" "<<b2<<endl;
- cout<<"引用传递:";
- swap_3(a3,b3);
- cout<<a3<<" "<<b3<<endl;
- return 0;
- }
#include<iostream>using namespace std;void swap_1(int a,int b){int temp;temp=a;a=b;b=temp;}void swap_2(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}void swap_3(int &a,int &b){int temp;temp=a;a=b;b=temp;}int main(){int a1=3,b1=6;int a2=3,b2=6;int a3=3,b3=6;cout<<"值传递:";swap_1(a1,b1);cout<<a1<<" "<<b1<<endl;cout<<"指针传递:";swap_2(&a2,&b2);cout<<a2<<" "<<b2<<endl;cout<<"引用传递:";swap_3(a3,b3);cout<<a3<<" "<<b3<<endl;return 0;}
测试结果:
分析如下:①值传递只是实参向形参传递了一个拷贝,在swap_1()中对局部变量a,b的操作不会影响实参。②指针传递是将实参的地址传递给形参了,
那么形参就可以通过地址来操作实参的内存,以及数据。所以可以调换。③调用swap_3()时系统向形参传递的是实参的地址而不是其值。
形参变成了实参的引用,所以也可以对换。
然而,可以说引用传递比指针传递更加好一点。第一,引用传递代码更加简洁、通俗。第二,引用传递的形参只是实参的引用,不会生成临时变量。
小疑问:书上说:指针传递实际也是中值传递,因为实参的值是变量的地址。那么引用传递不也是传地址的吗?这样不也就可以说引用传递也是值
传递了?不解!
⑵指针与数组的关系。
数组名代表的是该数组存储空间的首地址,这或许也就注定数组与指针的千丝万缕的联系。
①指针与一维数组。
这是比较简单的情况。主要就是数组的访问方式:下标法和指针法。如a[i]形式和*(a+i)的形式。其次,用指针和自增自减运算符结合访问数组
也是种比较简便的方式。
②指针与二维数组。
这就相对复杂了。因为二位数组的每个元素都是一维数组,访问起来就较为繁琐。
例如:int a[4][4],数组名a依旧代表的是数组的首元素地址,但此时的首元素已不是一个整型变量了,而是一个含有四个整型变量的一维数组了。
所以,定义int *p=a,编译就会出错,p只能指向一个整型变量,而不是一个一维数组;可以这样赋值p=a[0]或p=&a[0][0],此时如果要访问
a[i][j]则可以用*(*(p+i)+j)。int (*q)[4]=a,是正确的。此时的q是一个指针变量,它指向包含四个整型变量的一维数组。
- 浅谈指针
- 指针浅谈
- 指针浅谈
- 浅谈指针
- 浅谈指针
- 浅谈指针
- 指针浅谈
- 指针浅谈
- 浅谈指针
- 浅谈指针
- 浅谈指针
- 迷途指针浅谈
- 浅谈delphi中的指针
- 迷途指针浅谈
- 浅谈delphi的指针
- 浅谈DELPHI指针
- 浅谈pTOC指针(转载)
- 浅谈this指针
- [IOS]播放音乐的过程中,处理来电接入,挂断来电的事件
- bubble_sort
- win7如何将快捷方式吸附到任务栏
- 8月19学习练习[两三个TableView并排显示]
- 智能型磷酸铁锂电池快速充电控制器设计
- 指针浅谈
- 内嵌W5100的网络模块WIZ812MJ--数据手册
- 2013-8-19
- 游戏邦。游戏开发咨询网站
- 《算法竞赛-训练指南》-第二章-2.16_UVa 11427
- 数据库各类书籍推荐
- 在MFC类中各种类的指针的获取和应用 .
- 总结NHibernate 中删除数据的几种方法
- 浅谈C++中的资源管理