普通类型变量的声明
char a =10 ; //声明一个char类型,值为10的a变量
short b = 20; //声明一个short类型,值为20的b变量
int c = 30; //声明一个int类型,值为30的c变量
这是我们普通数据类型的声明,十分常规。
带*类型变量的声明
int* px; //声明一个int* 类型的px变量
int** px2; //声明一个int**类型的px2变量
int*** px3; //声明一个int***类型的px3变量
int**** px4; //声明一个int****类型的px4变量
现在大多数书上声明指针类型是int *px或者int * px 这样的形式的,这两种形式都是不推荐的。这样的声明不太符合程序员的思维。
*(px1) 代表int类型
*(px2) 代表int*类型
*(px3) 代表int**类型
*(px4) 代表int***类型
在带*类型的变量的前面加上一个*,其类型就是原来的类型减去一个*
带*类型变量的赋值
如果是int类型赋值,我们上面看到,是直接int a; a=10即可,其实可以写成a= (int)10;这样赋值,只是int强制类型我们默认是不用写的。
但是带*类型的赋值,是不能省略的,具体如下。
int* px;
int** px2;
int*** px3;
px = (int*)10; //给int*赋值
px2 = (int**)20; //给int**赋值
px3 = (int***)30;//给int***赋值
&符号的作用
&符号作用其实是去变量的地址
char a = 10;
short b = 20;
int c = 30;
char* pa = &a;
short* pb = &b;
int* pc = &c;
&pa 变成了char**类型
&pb 变成类short**类型
&pc 变成类int**类型
取值
带*类型的变量,可以通过在其变量前加*来获取其指向内存中存储的值
int x, y;
int* px1;
int** px2;
int*** px3;
x =10;
px1 = &x; //取x的地址
px2 = &px1; //取x地址的地址
px3 = &px2; //取x地址的地址的地址
y= (*(*(*px3))); //反取
所以y的值为10。
网友评论