您的位置:首页 > 编程语言 > C语言/C++

二级指针

2017-08-30 12:22 176 查看
//指针变量也是变量,占据一定的内存空间,有地址,
//因此可以用一个指针指向它,这称为指向指针的指针,或二级指针
//二级指针变量存储的是一级指针变量的地址

#include<stdio.h>
#include<stdlib.h>

double num1 = 10.8;
double num2 = 20.8;

void change(double *p)
{
p = &num2;
printf("change %x\n", &p);
}

void changep(double **pp)			//传递指针的地址,改变指针变量存储的值(变量的地址)
{									//*pp 对应 double * 类型
*pp = &num2;
}

void main()
{

double *p = &num1;
//change(p);
//printf("main %x\n", &p);

double **pp = &p;
//double是最终指向的变量的数据类型
//&p、pp是指针变量的地址
//*pp是根据指针变量的地址取出的值,为变量num1的地址
//**pp是根据num1的地址取出的值,为10.8

printf("%d,%d\n", sizeof(double *), sizeof(&p));

//int *p = &num1;		//指针类型决定从起始地址(p)读取多长的数据,以及这一段数据如何解析

//double **pp = &p;
//p = &num2;		//地址赋值,指针改变了指向

printf("%f\n", *p);
printf("%f\n", **pp);

changep(&p);		//地址赋值,改变了一级指针存储的地址值

printf("%f\n", *p);
printf("%f\n", **pp);

system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息