C语言,。指针问题。难。

来源:百度知道 编辑:UC知道 时间:2024/06/14 02:03:10
编写一个程序,使用指针交换两个数的值;

我自己做的
#include <stdio.h>
void main()
{
int a,b,*p1,*p2,t;
printf("请输入2个数;");
scanf("%d%d",&a,&b);

p1=a;
p2=b; //第一种方法

t=p1;
p1=p2;
p2=t;

printf("交换后两数值为:%d %d\n",p1,p2);

}
还有第二种 (数组做的,想动态接收,在输出。希望灵活点。不要问这么死板的程序)#include <stdio.h>
void main()
{
int a[2],i,*p;
p=&a;

printf("请输入2个数:");
for(i=0;i<2;i++)
scanf("%d",&a[i]);

p=a[1];

while(p=a[1])
{
p--;
printf("%d ",p);

}

} 好像有错误。。。希望高人解决

第一种
#include <stdio.h>
void main()
{
int a,b,*p1,*p2,*t=null;
p1=&a;
p2=&b;
printf("input two Number:");
scanf("%d%d",p1,p2);
*t=*p1;
*p1=*p2;
*p2=*t;
printf("after two Number %d %d\n",*p1,*p2);
}
/*定义指针,然后对它们初始化是p1=&a; p2=&b;而不能写成p1=a; p2=b;如果a b 是数组的话才能像这样赋值。*/

第二种
#include <stdio.h>
void main()
{
int a[2],i,*p;
p=a;
printf("input two Number:");
for(i=0;i<2;i++){
scanf("%d",p);
p++;
}
i=p[0];
p[0]=p[1];
p[1]=i;
for(i=0;i<2;i++)
printf("after two Number %d",a[i]);
}

1.p1 p2是指针类型
那么你赋值的时候就应该写成:p1=&a p2=&b

2.printf()语句中,p改成*p

*p才表示p指针所指向的数组元素

指针必须先初始化才能使用

你对指针和数组的概念以及它们的关系理解有问题。
我建议你好好看看书,好好理解去 。

不太难,注意指针值和地址的区别,交换的是值,要做取值操作。“*”

看不懂