指针不同的交换方式

作者在 2012-10-28 19:56:14 发布以下内容
#include <stdio.h>

int main(){
    int *p1, *p2, a, b, c, d;

    printf("输入4个整数:");
    scanf("%d%d%d%d", &a, &b, &c, &d);
    p1 = &a;
    p2 = &b;
    printf("a = %d, b = %dn", a, b);
    printf("p1 = %d, p2 = %dn", *p1, *p2);

    {
        int *p;
        p = p1;
        p1 = p2;
        p2 = p;
    }
    printf("a = %d, b = %dn", a, b);
    printf("p1 = %d, p2 = %dn", *p1, *p2);

    p1 = &c;
    p2 = &d;
    printf("c = %d, d = %dn", c, d);
    printf("p1 = %d, p2 = %dn", *p1, *p2);

    {
        int temp;
        temp = *p1;
        *p1 = *p2;
        *p2 = temp;
    }
    printf("c = %d, d = %dn", c, d);
    printf("p1 = %d, p2 = %dn", *p1, *p2);

    return 0;
}
 void swap(int *p1, int *p2){  //p1 = &a, p2 = &b;a,b为整型
    int *temp;
    *temp = *p1;
    *p1 = *p2;
    *p2 = *temp;
}
/*
 *上边程序的错误很隐蔽,*p1, *p2的值为整型,而*temp是整型指针不错,但temp中并无确
 * 定的值,因此temp所指向的单元也是不可预见的,有可能给存储着一个重要数据的存储单元
 *赋值,对系统的正常工作造成破坏
 */
/*首选下边的方法*/
void swap(int *p1, int *p2){
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}
基础编程 | 阅读 815 次
文章评论,共0条
游客请输入验证码
浏览18297次
文章归档