❶ c语言中用指针交换数据
#include<stdio.h>
voidswap1(inta1,intb1)
{
inttemp1;
temp1=a1;
a1=b1;
b1=temp1;
}
voidswap2(int*a2,int*b2)
{
inttemp2;
temp2=*a2;
*a2=*b2;
*b2=temp2;
}
voidmain()
{
inta=1949,b=2008;
printf("变量a,b的初始值分别为:a=%d,b=%d ",a,b);
swap1(a,b);
printf("不是用地址传递后产生交换无变化:a=%d,b=%d ",a,b);
swap2(&a,&b);
printf("用地址传递后产生正确的交换:a=%d,b=%d ",a,b);
}
❷ c语言指针变量值交换
你只是a和b换个值,干嘛要用指针,用temp就行了。你定义的两个指针也没用上啊,而且a和b换值,最好的做法是
a=a^b
b=a^b
a=a^b
如果我没记错的话就是这样子,利用异或最省计算资源了。
❸ C语言中如何交换两个指针变量的的值
1、首先,就是最基本的知识,写头文件、函数声明、定义变量。
❹ c语言用指针交换两个数
C语言不能企图改变指针形参而使指针实参也发生变化,p1和p2是两个指针变量,他们的交换不能影响实参。正确的是在函数内定义int t,然后去掉下面变量t前面的*,在p1和p2前加*。
❺ c语言用指针交换两个数的值
假设pa原本指向内存单元a,
pb原本指向内存单元b,
自然而然,交换之后pa指向内存单元b,
pb指向内存单元a,
那么pa对应的值就变成了b原来的值,
pb对应的值也就变成了a原来的值,
❻ c语言 指针交换两个字符串
长度不同,两者存放单元的个数应当都大于 最长的字符串,否则交换以后 存不下,会出错。
#include <stdio.h>
#include <stdlib.h>
void jh(char *p1, char *p2){
char *t;
int i,L;
L = strlen(p1);
if (strlen(p2) > L) L = strlen(p2);
t = (char *) malloc(sizeof(char) * L);
strcpy(t,p1);strcpy(p1,p2);strcpy(p2,t); // 交换
}
main(){
char s1[100]="abc", s2[100]="1234567"; // 实际允许存放量必需足够大
printf("%s %s \n",s1,s2);
jh(s1,s2);
printf("%s %s \n",s1,s2);
return 0;
}
❼ c语言的指针交换问题
//C语言的参数传递方式是传值。第二个改为:
#include<stdio.h>
void swap(int *a,int *b) //交换a,b的值,不起任何作用。应该交换a,b所指对象的值。
{
int t;
t=*a;*a=*b;*b=t;
}
main()
{
int i,j,*p=&i,*q=&j;
printf("please input i and j:\n");
scanf("%d%d",&i,&j);
swap(p,q);
printf("%d %d\n",*p,*q);
}
❽ C语言用指针法交换两个数的顺序问题
解答:
1. 注意形式参数和实际参数的区别,主函数中的x,y是实际参数,swap函数中的a,b是形式参数。他们各有自己的存储空间,互不干扰。
2. 在程序适当位置加上输出地址的语句,即可看出为什么回到主程序后,x,y的值为什么不交换。
❾ c语言中怎么用指针调换顺序
要调换三个数的顺序,用排列组合原理简单的计算总共有6种方法,不知道楼主是想按其中某种方法交换变量的具体数值,还是将所有6种排序都打印出来?
例如,a=1,b=2,c=3,交换后结果为:a=3,b=1,c=2.
首先需要两个中间变量作为交换的媒介。程序如下
:
main()
{
int
a=1,b=2,c=3;
int
*x=a,*y=b,*z=c;/*定义3个指针变量,并分别赋予初值为a,b,c的地址。*/
int
*p=null,*s=null;/*x为交换中介指针变量,初始化为空*/
*p=*x;
*s=*y;
*x=*z;
*y=*p;
*z=*s;
printf("%d
%d
%d",a,b,c);
getch();
}
其实交换数不需要用到指针,直接运用变量本身也可交换。当然指针交换的好处在于函数内部可以实际交换两个数的值。
❿ C语言用指针交换数值
#include
<stdio.h>//帮你改了几个地方
int
fun(int
*a,int
*b)
{
int
*t;
t=a;//注意*t表示指针所指向的值,t表示地址
a=b;
b=t;
printf("%d\t%d\t",*a,*b);
return
0;
}
void
main()
{
int
c=1,d=2,*a=&c,*b=&d;//你这里的赋值要给指针地址,加上个&
fun(a,b);
printf("%d\t%d\t",*a,*b);
}