美文网首页
(4)C语言基础,学习笔记(指针 )

(4)C语言基础,学习笔记(指针 )

作者: 王多鱼2 | 来源:发表于2019-10-30 23:43 被阅读0次

    &运算符,用于取一个对象的地址
    *是一个间接寻址符,用于访问指针所指向的地址的值
    int *ptr 定义一个指针
    int b = *ptr 用于访问指针所指向的地址的值
    & 与 * 是 一对互逆运算

    //值传递,不会影响最终的结果
    void swap(int x, int y) {
        printf("交换前:x = %d, y =%d\n", x, y);
        int tmp = x;
        x = y;
        y = tmp;
        printf("交换后:x = %d,y = %d\n", x, y);
    
    }
    
    // 指针传递,变量的地址
    void swap1(int* x, int* y) {
        printf("交换前:x = %p, y =%p\n", x, y);
        printf("交换前:*x = %d, *y =%d\n", *x, *y);
        int tmp = *x;
        *x = *y;
        *y = tmp;
        printf("交换后:x = %p, y =%p\n", x, y);
        printf("交换后:*x = %d, *y =%d\n", *x, *y);
    }
    
    
    
    int main() {
    
        int a = 2 , b =3;
        printf("交换前:a = %d, b = %d\n", a, b);
        swap(a,b);
        printf("交换后:a = %d, b = %d\n", a, b);
        printf("=======================\n");
    
        a = 20 , b = 30;
        printf("交换前:a = %d, b = %d\n", a, b);
        printf("交换前:&a = %p, &b = %p\n", &a, &b);
        swap1(&a,&b);
        printf("交换后:a = %d, b = %d\n", a, b);
        printf("交换后:&a = %p, &b = %p\n", &a, &b);
    
    
        return 0;
    }
    
    
    交换前:a = 2, b = 3
    交换前:x = 2, y =3
    交换后:x = 3,y = 2
    交换后:a = 2, b = 3
    =======================
    交换前:a = 20, b = 30
    交换前:&a = 000000000022FE4C, &b = 000000000022FE48
    交换前:x = 000000000022FE4C, y =000000000022FE48
    交换前:*x = 20, *y =30
    交换后:x = 000000000022FE4C, y =000000000022FE48
    交换后:*x = 30, *y =20
    交换后:a = 30, b = 20
    交换后:&a = 000000000022FE4C, &b = 000000000022FE48
    

    相关文章

      网友评论

          本文标题:(4)C语言基础,学习笔记(指针 )

          本文链接:https://www.haomeiwen.com/subject/potzvctx.html