C语言中对指针变量的直接和间接引用怎么区别
答案:3 悬赏:10 手机版
解决时间 2021-01-29 06:04
- 提问者网友:伴风望海
- 2021-01-28 20:57
C语言中对指针变量的直接和间接引用怎么区别
最佳答案
- 五星知识达人网友:骨子里都是戏
- 2021-01-28 22:26
引用相比于于指针各有优点:一、引用变量它不能改变自身所引用的地址空间,而指针变量可以,那么就很可能出现一些因为不小心的修改而导致错误的结果。二、在作为函数参数方面,引用作为参数,你调用的时候不需要对变量取地址值,这样看起来比较直观,而且方便,如果是指针变量作为参数,那么你有时候会不明白这个函数到底是对指针进行运算,还是对指针指向的变量空间进行运算,而且还要取地址操作。三、不过有时候指针还是比引用好用的多,不如你需要快捷修改指向位置,那么指针是很快的,有时候你就是要对地址(就是直接对内存)操作,那么指针是首选啦。 下面是一个例子希望对你有用: //PointAndRef.cpp#include<iostream.h> //cout<< void pointFun(int *a,int *b) //指针作为参数{
int temp;
temp=*a;
*a = *b;
*b=temp;
}void refFun(int &a,int &b) //引用作为参数
{
int temp;
temp=a;
a=b;
b=temp;
}
void main()
{
int a,b;
a=1,b=2;
pointFun(&a,&b); //指针调用需要取地址值。
cout<<"a="<<a<<"b="<<b<<endl;
int c,d;
c=3,d=4;
refFun(c,d); //引用调用和正常变量调用一样。
cout<<"c="<<c<<"d="<<d<<endl;
}
int temp;
temp=*a;
*a = *b;
*b=temp;
}void refFun(int &a,int &b) //引用作为参数
{
int temp;
temp=a;
a=b;
b=temp;
}
void main()
{
int a,b;
a=1,b=2;
pointFun(&a,&b); //指针调用需要取地址值。
cout<<"a="<<a<<"b="<<b<<endl;
int c,d;
c=3,d=4;
refFun(c,d); //引用调用和正常变量调用一样。
cout<<"c="<<c<<"d="<<d<<endl;
}
全部回答
- 1楼网友:毛毛
- 2021-01-28 23:55
指针不是一下子讲的完的哦
我推荐你去看一下C和指针这本书吧
再有不懂可以再问的
- 2楼网友:迟山
- 2021-01-28 23:21
void f(int * &ptr)是自定义函数!
无返回值!参数类型为指向int型变量的指针变量!即参数&ptr的类型是指向int型变量的指针!那就很好解释啦!
int *ap = arr,实际上是 int *ap = &arr[0],
分开写就是:
int *ap;
ap = &arr[0];
故 f(ap) 相当于 f(&arr[0]) 传的参数是指向int型变量的指针!正确!
而 f(arr) 中 arr 是错误写法,数组单独使用必须加下标!
但指针指向数组时!可以写成:ap = arr 相当于 ap = &arr[0]
但单独使用 arr 是错误的!它什么也不是!更不会是指向int型变量的指针,它不存在!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯