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结果如下
xiaozhounandu