天天看点

一些简单的指针操作(day3)

1.认识指针的一些基本性质

通过下面几段代码理解指针操作指定变量的一些基础性质。

实例

#include<stdio.h>

int main()

{

int a = 2 ;

int* p = &a;

printf("%d\n", a);

printf("%p\n", &a);

printf("%p\n", p);

*p = 4;

printf("%d\n", a);

printf("%p\n", &a);

printf("%p\n", p);

return 0;

}

结果

2

000000E0F719F554   //地址是由十六进制显示

000000E0F719F554

4

000000E0F719F554

000000E0F719F554

在主程序中,我们首先设置了一个整型变量a,随后将2存储于该变量内,随后我们设置了一个指针变量p,用以对a进行操作。

我们打印出a的值/a的地址/指针p指向的地址

可以得出指针的一个基本性质:指针变量实际上就是一个存储原变量地址的变量。在打印指针变量的地址时,指针会直接指向原变量的地址,而非指针变量自身的地址,这是因为指针变量的存储位置是一个特殊的工作区,指针此时类似于一种快捷方式,它的所有性质总会直接指向原变量。

现在,我们通过解引用指针p,将整型4存储在变量a的地址,打印后我们可以看到,解引用直接帮助我们找到原变量的存储地址,随后将新的数值放了进去。

以上可以理解为,我们通过拿出抽屉里的房间号牌,将已经预定的房间内里原来存放的东西清理掉,随后放入新的东西。这个过程我就不需要去理解我原来叫这个房间是a还是b或是其他名字了,我只需要直接拿着号牌找到该房间即可。

实例2

​#include<stdio.h>

int main()

{

double a = 1.34;

double* pa = &a;

printf("%d", sizeof(pa));

return 0;

}

结果

8

我们设置了一个double类型的变量,向内存申请了8个字符存储3.14随后我们设置了一个double类型的指针变量pa,用来指向该变量,我们尝试打印pa指向的a变量所申请的内存大小,结果显然是整型数8,因为指针变量的性质只指向原变量。