c++中的问题 指针 和指针加引用 5

c++中的指针传递参数#include<iostream>usingnamespacestd;voidchosesort(int*&a,intn);intmain(){i... c++中的指针传递参数

#include <iostream>

using namespace std;
void chosesort(int *& a,int n);
int main()
{
int n,i;
cin>>n;
int *array=new int[n];

for (i=0;i<n;i++)
{
cin>>array[i];
}
chosesort(array,n);
for (i=0;i<n;i++)
cout<<array[i]<<" ";

return 0;
}
void chosesort(int *&a,int n)
{
int i,j;
int temp;
for (i=1;i<n;i++)
{
temp=a[i];
for (j=i-1;j>=0&&temp<a[j];j--)
a[j+1]=a[j];
a[j+1]=temp;
}
}



c++中的指针传递参数

#include <iostream>

using namespace std;
void chosesort(int * a,int n);
int main()
{
int n,i;
cin>>n;
int *array=new int[n];

for (i=0;i<n;i++)
{
cin>>array[i];
}
chosesort(array,n);
for (i=0;i<n;i++)
cout<<array[i]<<" ";

return 0;
}
void chosesort(int *a,int n)
{
int i,j;
int temp;
for (i=1;i<n;i++)
{
temp=a[i];
for (j=i-1;j>=0&&temp<a[j];j--)
a[j+1]=a[j];
a[j+1]=temp;
}
}

这两种传递有什么区别 ????
展开
 我来答
米兰球迷tyb
2012-07-04
知道答主
回答量:13
采纳率:0%
帮助的人:11.3万
展开全部
就像那位同学说的,结果都一样。
在第一个main 中利用chosesort(array,n) 来调用void chosesort(int *& a,int n);相当于在函数chosesort中操作的就是array, 这个a是array 的引用。
而在第二个main中利用chosesort(array,n) 来调用void chosesort(int * a,int n); 时,相当于a 和array 都是指向的同一块内存,所以在chosesort 中对a的操作也相当于对array所指内存操作。
一个就是array, 一个是指向同一内存。
一个比较有意思的处理方式供你参考:
比如说,我们都知道如下代码是有问题的:
int getMemory(char *p)
{
p = malloc(100);
//判定p是否分配成功
}
这个p是不能带出去的;
但是如果我们这样写:
int getMemory(char *&p)
{
p = malloc(100);
//判断p是否分配成功
}
比如我们是这样调用getMemory
int main(...)
{
char *test = NULL;
getMemory(test);//调用的是int getMemory(char *&p)
....
}
这样test就能顺利的分配成功。因为test和p就是同一个东西。
mangshe0
2012-07-04 · 超过18用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:41.5万
展开全部
值都会改变,
指针传递 传递的是指针,
指针地址传递 传递的是指针的地址。
首先明确:指针这个变量 里面记录的内容 是一个地址
所以你通过指针,间接的去修改指针指向的地址内的数据
和直接修改指针地址内记录对应的数据 从结果上讲是一样的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0o猩红o0
2012-07-03
知道答主
回答量:13
采纳率:0%
帮助的人:12.7万
展开全部
*&a:将指针的地址传入。这样你可以更改指针存储的东西(更改地址 让原来的指针指向新的内容 函数退出后指针指向不变。)
*a:将指针存储的东西存入a指针,只能更改指针存储的地址所指向的内容。(函数退出后,即使你改了a存储的地址 原来的指针存储的地址是不会变的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mjfsxl
2012-07-08
知道答主
回答量:7
采纳率:0%
帮助的人:1.1万
展开全部
第一个是给指针取一个别名,在函数中别名就是a,而第二个直接是一个名字a,两者输出结果一样。&运算符有两个作用,一个是取址 一个是引用。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式