C语言指针之---指针声明与取值

普通类型变量的声明

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。

你可能感兴趣的:(C语言指针之---指针声明与取值)