重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1,可以去掉using namespace std,这样编译器会警告甚至错误,警告的情况下你也不能正确交换指针。2,如果你使用其他std的东西,那请在main里调用swap时,写成:swap,编译器就会给警告甚至错误了,并且也不能正确交换。
我们提供的服务有:网站建设、做网站、微信公众号开发、网站优化、网站认证、浑源ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的浑源网站制作公司
长度不同,两者存放单元的个数应当都大于 最长的字符串,否则交换以后 存不下,会出错。
如果只是交换的问题的话,还是不难的。其实你是因为指针的定义没有弄清楚。
但它是一个指针常量,也就是说a[0]是指针没错,但a[0]=a[1]这样是错误的。因为无法对a[0]重新赋值。所以你说的这种没有办法实现,这是C/C++的规则限定的。除非你用指针p,q来代替a[0]、a[1]。
因为指针a b是指向指针p q的,所以写成a b的时候只是单纯的指向p q它们所在的地方,而不是指向 i j的地方,也就相当于指针p q换了个位置,使得a指向q也就指向j,b指向p也就指向i,但是i,j自己的值并没有变化。
这个是这样的,因为指针变量一般就是32位的长度,同样int类型也是32位的长度,p1里面的地址也是能放在p里面存储的(char ,short类型就不行了)。
首先,就是最基本的知识,写头文件、函数声明、定义变量。下面还需要定义指针,需要定义两个指针p1和p2,然后把a的地址赋值给p1,把b的地址赋值给p2。
void swap(int *x,int *y) x,y是地址 temp = *x; //temp的值是x地址指向的值 这么理解就明白了。int a;int *a2;a = 5;a2=a2 = 6;运行到这里a就是等于6,有没有明白呢。
主函数里指针p指向变量a的地址,q指向变量b的地址,p=a,*q=b,这应该没问题吧。change函数的形参分别是取a的地址和b的地址,然后用第三个变量t来实现值交换。再打印就是互换后的值。
说明:^=只是利用异或来实现2个地址的数值交换,和你定义一个变量做交换是一个效果。
逐个元素交换即可。前提是两个数组必须有同样的长度 否则无法交换。
}int fun(int *p){int i,b,c,d;char j[100];strcpy(j, p);//用memcpy也可以。
它与简单变量的交换方法相同,但是字符串的传递是通过系统函数实现的。
在程序适当位置加上输出地址的语句,即可看出为什么回到主程序后,x,y的值为什么不交换。为了更形象,可以用图表示它们的关系:可见,交换的只是swap函数中的a,b值,对主函数中的a,b值没有影响。