c 语言中的 * , &,*&

 int a,b;
    int *pointer_1 ,*pointer_2;
    a=100;b=200;
    pointer_1=&a;
    pointer_2=&b;
    printf("a实际值==%d\n",a);
    printf("b实际值==%d\n",b);

    printf("*&a实际值==%d\n",*&a);
    printf("*&b实际值==%d\n",*&b);

    printf("&a地址==%d\n",&a);
    printf("&b地址==%d\n",&b);
    printf("*pointer_1取的是a的真实值==%d\n",*pointer_1);
    printf("*pointer_2取的是b的真实值==%d\n",*pointer_2);

    printf("&pointer_1取的是a的地址值==%d\n",&pointer_1);
    printf("&pointer_2取的是b的地址值==%d\n",&pointer_2);

    printf("*&pointer_1取的是a的地址值==%d\n",*&pointer_1);
    printf("*&pointer_2取的是b的地址值==%d\n",*&pointer_2);




int a, b;: 声明了两个整型变量 a 和 b。

int *pointer_1, *pointer_2;: 声明了两个指向整型变量的指针 pointer_1 和 pointer_2。

a = 100; b = 200;: 给变量 a 和 b 赋值为 100 和 200。

pointer_1 = &a; pointer_2 = &b;: 将指针 pointer_1 指向变量 a 的地址,将指针 pointer_2 指向变量 b 的地址。

printf("a实际值==%d\n", a);: 打印变量 a 的实际值(内容)为 100。

printf("b实际值==%d\n", b);: 打印变量 b 的实际值(内容)为 200。

printf("*&a实际值==%d\n", *&a);: 使用指针的间接访问方式,打印 *&a,这里 &a 取得是变量 a 的地址,*&a 表示取得该地址对应的内容,即变量 a 的实际值,结果为 100。

printf("*&b实际值==%d\n", *&b);: 使用指针的间接访问方式,打印 *&b,这里 &b 取得是变量 b 的地址,*&b 表示取得该地址对应的内容,即变量 b 的实际值,结果为 200。

printf("&a地址==%d\n", &a);: 打印变量 a 的地址,结果为 a 的内存地址。

printf("&b地址==%d\n", &b);: 打印变量 b 的地址,结果为 b 的内存地址。

printf("*pointer_1取的是a的真实值==%d\n", *pointer_1);: 使用指针的间接访问方式,*pointer_1 表示取得指针 pointer_1 所指向地址对应的内容,即变量 a 的实际值,结果为 100。

printf("*pointer_2取的是b的真实值==%d\n", *pointer_2);: 使用指针的间接访问方式,*pointer_2 表示取得指针 pointer_2 所指向地址对应的内容,即变量 b 的实际值,结果为 200。

printf("&pointer_1取的是a的地址值==%d\n", &pointer_1);: 打印指针 pointer_1 的地址,即变量 a 的地址,结果为 pointer_1 的内存地址。

printf("&pointer_2取的是b的地址值==%d\n", &pointer_2);: 打印指针 pointer_2 的地址,即变量 b 的地址,结果为 pointer_2 的内存地址。

printf("*&pointer_1取的是a的地址值==%d\n", *&pointer_1);: 使用指针的间接访问方式,*&pointer_1 表示取得指针 pointer_1 的地址所对应的内容,即变量 a 的地址值,结果为 pointer_1 的内存地址。

printf("*&pointer_2取的是b的地址值==%d\n", *&pointer_2);: 使用指针的间接访问方式,*&pointer_2 表示取得指针 pointer_2 的地址所对应的内容,即变量 b 的地址值,结果为 pointer_2 的内存地址。


结果如下

*p和**p的区别
int *p :一级指针,表示p所指向的地址里面存放的是一个int类型的值
int **p :二级指针,表示p所指向的地址里面存放的是一个指向int类型的指针(即p指向的地址里面存放的是一个指向int的一级指针)


    int x=16;     //定义整形变量
    int *p=&x;   //定义一个指针指向这个变量
    int **p1=&p; //定义一个二级指针指向p指针
    printf("a=%d\n",x);
    printf("a=%d\n",*p);
    printf("a=%d\n",**p1);

code结果如下

posted @ 2023-07-28 00:51  xiaozhounandu  阅读(280)  评论(0编辑  收藏  举报