有关c语言指针的地址传递问题如图,我用指针和函数编写的,为什么最后结果不会进行交换,比如我输入1 2 结果还是1 2 按道理说p本来指向a的地址,q指向b的地址,我用swap函数交换后应该是改变了

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/15 18:50:32
有关c语言指针的地址传递问题如图,我用指针和函数编写的,为什么最后结果不会进行交换,比如我输入12结果还是12按道理说p本来指向a的地址,q指向b的地址,我用swap函数交换后应该是改变了有关c语言指

有关c语言指针的地址传递问题如图,我用指针和函数编写的,为什么最后结果不会进行交换,比如我输入1 2 结果还是1 2 按道理说p本来指向a的地址,q指向b的地址,我用swap函数交换后应该是改变了
有关c语言指针的地址传递问题

如图,我用指针和函数编写的,为什么最后结果不会进行交换,比如我输入1 2 结果还是1 2 按道理说p本来指向a的地址,q指向b的地址,我用swap函数交换后应该是改变了指针的指向 即p指向b  q指向a  当然a<b时就会运行swap函数,这样一来最后输出的结果是*p 和*q的址.按道理来说应该会进行交换的,

有关c语言指针的地址传递问题如图,我用指针和函数编写的,为什么最后结果不会进行交换,比如我输入1 2 结果还是1 2 按道理说p本来指向a的地址,q指向b的地址,我用swap函数交换后应该是改变了
这个方式是交换不了的.这样做也是值传递.
在传递参数时,在swap函数内,创建了两个新的指针变量p1,p2,它们的值分别于main函数中传入的参数一样(指向的内存空间一样)所以在swap只是交换的这两个新变量的值,而不会影响main函数中p,q的值
可以修改下swap:
void swap(int *p1, int *p2){
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}

有关c语言指针的地址传递问题如图,我用指针和函数编写的,为什么最后结果不会进行交换,比如我输入1 2 结果还是1 2 按道理说p本来指向a的地址,q指向b的地址,我用swap函数交换后应该是改变了 C语言的指针问题.*(p+i)是代表取值呢还是取地址?有一二维数组a[3][4]={{56,45,89,90},{13,34,56,45},{65,55,34,68}}如果我定义指针*P,指向首地址,*(p+i)就能取到数组中的值.但如果我定义指针(*p)[4],指 一道C语言指针的问题 c语言指针传递问题一个一维数组并初始化其元素值,根据指针传递、引用传递方式对其进行由小到大进行排序指针传递是啥意思? 问一个关于C语言指针的问题,我的理解是,指针是为了通过变量的内存地址间接访问变量..但是既然可以直接..既然可以直接访问变量,为何要用上指针来间接访问变量呢.指针的优势是什么,我们 C语言:传入两个字符串型指针,把其中一个指针所指向的地址空间中的内容复制到另一个指针所指向的地址空间 C语言中的指针指的是什么 C语言中,为什么指针表达式的值+1.对应的地址值却+4 C语言中,函数和函数指针,效率上差很多吗?使用函数的时候,我用debug查看汇编码,用的是call 函数入口地址,用函数指针的汇编码为call si,其中si中存放的就是函数入口地址.这两种形式上的,在效 说C语言中函数值传递与地址传递的方法各自有什么优缺点,有什么不同,什么情况下适合用哪种,由于本问题太深奥了,我给五分,貌似我太扣了,不过我就20分,嘻嘻 怎么获得一个指针变量所指向的地址的值比如说定义了一个指针变量int *p,p指向的地址为0x80000,那在C语言中我怎么p指向的地址为0x80000?额,打少了几个字,应该是这样的:定义了一个指针变量int C语言指针的传递性可不可以这样认为a指向bc指向a则c指向b? C语言的问题 什么是指向指针的指针,这个地方理解的不是很好,最好举个例子帮我解答, C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就 C语言中关于指针的理解我不理解这一句话 :如果p是一个已经定义好的指针变量,那么*p表示以p的地址为内容的变量.什么是以p的地址为内容的变量?*p不就是指针所指向的内容吗? C语言用指针法交换两个数的顺序问题交换两个数的顺序,可以交换地址,可以交换值.当用函数调用法交换地址的时候,为什么不可以实现.程序如下:#include//这是用一个主函数就交换的方法.main( C语言中若定义数组和指向数组的指针,其中元素的地址可用哪几种方式表达? c语言中,定义一个指针 int*p.假定刚开始时候p所指向的地址相同.则指针p++和*(p++)的意义是否相同?