C视频 指针篇,第二讲
此讲中第二个案例,使用函数按大小顺序打印两个数,视频中讲解的是使用函数交换指针地址中的数据。我测试的是使用函数交换指针地址,结果交换后的指针地址不会转递给主函数。
代码如下,望高人点拨:
void swap(int *p1, int p2);
void main()
{
int a, b;
int *pointer_1, *pointer_2;
scanf("%d %d", &a, &b);
pointer_1 = &a;
pointer_2 = &b;
printf("%d,%d\n", pointer_1, pointer_2);
if(a < b)
{
swap(pointer_1, pointer_2);
}
printf("%d, %d\n", pointer_1, pointer_2);
printf("max = %d, min = %d\n", *pointer_1, *pointer_2);
}
void swap(int *p1, int *p2)
{
int *p;
p = p1;
p1 = p2;
p2 = p;
}
void swap(int *p1, int *p2)
{
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}
void main()
{
int a, b;
int *pointer_1, *pointer_2;
scanf("%d %d", &a, &b);
pointer_1 = &a;
pointer_2 = &b;
printf("%d,%d\n", *pointer_1, *pointer_2);
if(a < b)
{
printf("success\n");
swap(pointer_1, pointer_2);
}
printf("%d, %d\n", *pointer_1, *pointer_2);
printf("max = %d, min = %d\n", *pointer_1, *pointer_2);
} 雪是梅之香 发表于 2015-5-3 23:37
这是交换内存地址中的数据,是可以实现,但是函数如果交换的是内存地址,就不能实现。
我单步调试过了,函数运行后,指针变量中的地址是交换了,但是函数值不返回 如果直接使用if语句交换内存地址,就可以实现
void main()
{
int a, b;
int *pointer_1, *pointer_2, *p;
scanf("%d %d",&a, &b);
pointer_1 = &a;
pointer_2 = &b;
if(a < b)
{
p = pointer_1;
pointer_1 = pointer_2;
pointer_2 = p;
}
printf("%d,%d\n",pointer_1,pointer_2);
printf("max = %d, min = %d\n", *pointer_1, *pointer_2);
} zhongxm 发表于 2015-5-6 00:39
这是交换内存地址中的数据,是可以实现,但是函数如果交换的是内存地址,就不能实现。
我单步调试过了, ...
楼主我发的代码里定义的p是一个整数,不是一个指针,所以可以实现你的要求
页:
[1]