
正文
c语言交换数组的两个元素,c语言编写交换两个数的值
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言用指针和自定义函数实现数组元素的调换
你原代码函数那样写是实现不了数组交换的,我用你的代码小做修改。你看下吧。说明:^=只是利用异或来实现2个地址的数值交换,和你定义一个变量做交换是一个效果。
这个没有办法。因为数组的数组名虽然本质上是一个指针,但它是一个指针常量,也就是说a[0]是指针没错,但a[0]=a[1]这样是错误的。因为无法对a[0]重新赋值。所以你说的这种没有办法实现,这是C/C++的规则限定的。除非你用指针p,q来代替a[0]、a[1]。
解 注意形式参数和实际参数的区别,主函数中的x,y是实际参数,swap函数中的a,b是形式参数。他们各有自己的存储空间,互不干扰。 在程序适当位置加上输出地址的语句,即可看出为什么回到主程序后,x,y的值为什么不交换。
而严重的情况是,该单元的数据可能是有用的,因此fun2()不但没有实现两个数的交换,反而给系统的稳定性带来威胁。fun3(),将int赋值给int *,编译错误。fun4()是正确的。
有如下两种方法:循环按每个元素交换。以下程序完成二维数组第0行和第1行的交换。include stdio.hint main(){ int a[2][2] = {1,2,3,4}; int v; int i,j; for(i = 0; i 2; i ++) { //以下三行是对i位置的第0行和第1行数据进行交换。
相关问答
Q1: C语言中两个数组可以互换元素吗?例如a[3]=a[4]可以吗?
1、如果你说的只是下标的名字,那当然可以互换。a[i][j] 表示i 行 j列,a[j][i] 表示j行i列。
2、b[5] = a[5];肯定是不行的,那样只改了b[5]其他元素没改。
3、定义指定的是数组的大小,a[4]表示a的大小为4(个元素)。而由于C的数组下标以0开头,所以a[3]就是最后一个元素。另外a[]={1,2,3,4}也是可行的。
Q2: 【c语言】定义一个使用指针的函数,实现交换数组a和数组b中的元素
说明:^=只是利用异或来实现2个地址的数值交换,和你定义一个变量做交换是一个效果。
Print Array a:1 2 3 Print Array b:4 5 6 数组名如a,b的确相当于指针,但是他们是不可变的,不能对数组名这个变量进行赋值。而且,交换数组本来就是有限制的,要求两个数组的大小相等,否则会有异常产生。
a4:2;b4:1 aa4:2;bb4:1 a5:2;b5:1 aa5:2;bb5:1 main中调用fun1()时,将实参a,b的值传递给了交换函数,如果此时在swap1中打印,可以看到结果是正确的,但是该过程其实是将aa和bb分别复制了一份给了函数,执行完fun1()之后,aa和bb的值没有任何变化。
首先,就是最基本的知识,写头文件,函数声明,定义变量。下面还需要定义指针,需要定义两个指针p1和p2,然后把a的地址赋值给p1,把b的地址赋值给p2。然后就是调用函数,该函数没有返回值,就直接调用,但是参数进入的是a和b的地址,而不是a和b。
int a,b;scanf(%d%d,&a,&b);swap(&a,&b);printf(%d %d\n,a,b);return 0;} swap操作实现交换两个容器内所有元素的功能。要交换的容器的类型必须匹配: 必须是相同类型的容器,而且所存储的元素类型也必须相同。
Q3: C语言中实现两个一维数组间元素的交换
1、fot(i=0;i10;i++){if(a[i]==M) //找元素 {a[i]=K;break;} //修改值。
2、你原代码函数那样写是实现不了数组交换的,我用你的代码小做修改。你看下吧。说明:^=只是利用异或来实现2个地址的数值交换,和你定义一个变量做交换是一个效果。
3、或者遍历二维数组,将每个元素赋值为一维数组对应值上。优点为操作灵活,可以按照需要任意赋值。当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。
4、(x+i-1)=*tmp;} free(tmp);tmp=NULL;} 我不知道我理解的对不对,环移1位就是所有成员向右移动1位,最后1位到最前面来。main函数就是用来测试的,函数rightmove就是把整形数组向右移动1位,形参是数组首地址和数组长度。main函数输入N,rightmove循环N次。数组只有10个成员,你可以重新定义。
5、使用双重循环,对数组元素遍历并赋值。代码如下:int i, j;for(i = 0; i M; i ++)for(j = 0; j N; j ++)a[i][j] = b[i][j];//逐元素赋值。2 整体复制内存。由于二者结构相同,可以使用C库函数memcpy来实现更高效的数据复制。
c语言交换数组的两个元素的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言编写交换两个数的值、c语言交换数组的两个元素的信息别忘了在本站进行查找喔。






