c语言指针函数互换问题 c语言指针函数传参

C语言使用指针函数进行数组互换问题你这个只是试图交换两个数组c语言指针函数互换问题的首地址c语言指针函数互换问题,而数组c语言指针函数互换问题的首地址是常量c语言指针函数互换问题,不会交换成功的 。
你的swap中要用循环一次交换两个数组的对应元素才能实现你想要的功能 。
C语言问题:怎样用指针和函数实现两个数组的交换#include stdio.hvoid swaparr(int *a,int m,int *b,int n) { // 仅交换n和m中较小者c语言指针函数互换问题的元素个数
int SIZE,tmp;
if(nm) SIZE = m;
else SIZE = n;
for(int i = 0;iSIZE;i++) {
tmp = a[i];
a[i] = b[i];
b[i] = tmp;
}
}void main() {
int a[] = {10,25,32,66,54,89,74,55,12,42};
int b[] = {58,21,35,102,56,97,18,63,85,50};
int i,m,n;
m = sizeof(a)/sizeof(int);
n = sizeof(b)/sizeof(int);
printf("\n交换前c语言指针函数互换问题的数组a中c语言指针函数互换问题的元素为 :\n");
for (i = 0;im;i++) printf("%5d",a[i]);
printf("\n交换前的数组b中的元素为 :\n");
for (i = 0;in;i++) printf("%5d",b[i]);
swaparr(a,m,b,n);
printf("\n交换后的数组a中的元素为 :\n");
for (i = 0;im;i++) printf("%5d",a[i]);
printf("\n交换后的数组b中的元素为 :\n");
for (i = 0;in;i++) printf("%5d",b[i]);
printf("\n\n");
}
C语言用指针法交换两个数的顺序问题解答:
1.注意形式参数和实际参数的区别c语言指针函数互换问题,主函数中的xc语言指针函数互换问题 , y是实际参数,swap函数中的a,b是形式参数 。他们各有自己的存储空间,互不干扰 。
2.在程序适当位置加上输出地址的语句,即可看出为什么回到主程序后,x,y的值为什么不交换 。
为了更形象,可以用图表示它们的关系:
可见,交换的只是swap函数中的a,b值,对主函数中的a , b值没有影响 。
3.修改的方法,将swap的交换变成值的交换 。
c语言指针交换求解!!!这个是这样的,因为指针变量一般就是32位的长度,同样int类型也是32位的长度,p1里面的地址也是能放在p里面存储的(char
,short类型就不行了) 。但是对于编译器来说,存放在p里面,他就认为是一个整数,所以就不能做一些指针的操作了,比如*p 。但是如果只是向你这种只是简单交换一下值是没问题的 。
C语言指针使用函数交换两个变量的值这个地方会出现不好理解的东西 。
调用函数的时候,你放入了int
a
int
b
但是这其实不是你的main函数中的a
b只是相当于他们的副本,也就是复制了一个a
和b
传入函数
所以你改变的只是传入的副本
也就是复制的副本a
b所以在main函数中打印的ab不会出现变化
依然是a=3,b=6
现在回答第二个问题,怎么会让ab的值变化:传入指针,也就是在main函数中使用a
b的指针,然后吧指针传入到函数里面
这个时候ab就会真正的发生变化,因为指针指向的是ab的物理地址 , 也就是真正的ab,不是副本 , 这个时候就会改变ab的值 。想要理解,可以去百度传值参数和引用参数 。纯手打,望采纳
【c语言指针函数互换问题 c语言指针函数传参】关于c语言指针函数互换问题和c语言指针函数传参的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读