1. c语言用指针交换两个数的值
假设pa原本指向内存单元a,
pb原本指向内存单元b,
自然而然,交换之后pa指向内存单元b,
pb指向内存单元a,
那么pa对应的值就变成了b原来的值,
pb对应的值也就变成了a原来的值,
2. 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的值。想要理解,可以去网络传值参数和引用参数。纯手打,望采纳
3. 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);
}
4. c语言指针交换两个变量的值
swap函数,看到temp=*x可知入参是*x和*y,是两个变量的地址
scanf参数是变量的地址,需要&取地址
p_a表示a的地址指针,因此 &a
输出就是printf
5. C语言指针实现数据交换
void swap(int *x,int *y) x,y是地址
temp = *x; //temp的值是x地址指向的值
这么理解就明白了。
int a;
int *a2;
a = 5;
a2=&a;
*a2 = 6;
运行到这里a就是等于6,有没有明白呢。
6. C语言中指针变量值互换问题
先声明一个临时变量p
p1,p2是两个指针,分别指向需要换值的两个数的地址
*p1是p1地址中数值
先将p1的值保存在临时的p中,在将p2的值赋给p1地址处
然后再将p的值送回p2中,因为p刚刚被p1赋值,所以p2的值就变成p1的值,达到互换的目的
7. c语言指针交换
这个是这样的,因为
指针变量
一般就是32位的长度,同样int类型也是32位的长度,p1里面的地址也是能放在p里面存储的(char
,short类型就不行了)。但是对于
编译器
来说,存放在p里面,他就认为是一个整数,所以就不能做一些指针的操作了,比如*p。但是如果只是向你这种只是简单交换一下值是没问题的。
8. C语言中,怎么交换指针数组里的值
程序主要通过冒泡法使用函数strcmp比较两指针所值字符串大小,通过临时指针交换两指针指向,实现字符串排序,代码如下,
//程序功能,从小到大排序10个字符串
#include <stdio.h>
#include <string.h>
void bubble_sort(char *a[], int n);
int main(int argc, char *argv[])
{
char a[10][20]={0};//存储10个字符串
char *p[10];//指向10个字符串
int i=0;
for(i=0;i<10;i++)
{
gets(a[i]);//输入字符串
p[i]=a[i];//指向字符串
}
for(i=0;i<10;i++)
{
puts(a[i]);//输出原字符串
}
bubble_sort(p,10);
for(i=0;i<10;i++)
{
puts(p[i]);//输出排序后字符串
}
return 0;
}
//冒泡法排序,从小到大排序
void bubble_sort(char *a[], int n)
{
int i, j;
char *temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if(strcmp(a[i],a[i+1])>0)//交换指针
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
int strcmp( const char *str1, const char *str2 );比较字符串str1、str2,返回值大于0,str1>str2,返回值小于0,str1<str2,返回值等于0,str1==str2。
9. c语言指针值交换小弟求解!!!
因为指针a b是指向指针p q的,所以写成a b的时候只是单纯的指向p q它们所在的地方,而不是指向 i j的地方,也就相当于指针p q换了个位置,使得a指向q也就指向j,b指向p也就指向i,但是i,j自己的值并没有变化。那么void swap(int *a,int *b)函数对应的swap(p,q);的值是5,3。但是因为:只是p和q交换了位置,自己本身,但是没有牵扯到它们所指的地址,也就是p还是指i,q还是指j。
所以最后*p,*q这两个指针所指的值还是3,5。
10. c语言用指针交换两个数
在
huan(int
*p1,int
*p2)这个函数中,交换的只是两个指针的指向,但是函数的结束、返回,这两个指针本身就消失了(它们的值并不会传回到main()函数中)所以,最后的结果没有交换。
如果要起到交换的作用,这个函数应该这样写:
void
huan(int
*p1,int
*p2)
{
int
t;
t=*p1;
*p1=*p2;
*p2=t;
}