指针定义
小白的学习笔记啦啦啦啦 ~~~
指针
我的理解是: 定义一个指针p,p表示变量名称,变量实际上就是地址,p 指向这个地址中存储的数值(变量名其实就是一个存储地址:例如:对于int a[3]={2,5,7}, a是一个int类型的变量,每一个变量名称就是存储的地址,地址&a[0]中存储的数值为2)
常见用法:int p = &a
如:
定义一个指针p,指针类型为int:int p,那么指针的大小为sizeof(int)=4, 即4个字节;
定义一个数组: char a[20],定义一个指针m,指针类型为int*,m指向数组a的首地址: int *m = a,那么sizeof(m)应该是多少呢?
答案仍是4个字节,那么为什么不是20个字节呢?
虽然m指向的数值是一个大小为20个字节的数组,但是对于指针本身的大小只和它自身的数据类型有关,与它指向的数据类型无关。因为指针本身会有一个地址即内存区,指针的大小是这个地址的大小,m是一个int类型的指针,虽然它指向了一个char类型的数组,但他的大小仍为sizeof(int) = 4.
因此 m+1 指向的是a[4]的地址。