一.什么是指针
指针是一种类型,用来存储变量的地址的类型
有哪些类型呢
字符指针:char*
整型指针:int*
浮点型指针:float*
双精度浮点型指针:double*
空指针:void*
(每一个类型的指针,都指定存储该类型变量的地址)(void*后面在讲解)
比如说:
int a=0;//创建一个int整型变量
int* p=&a;//创建了一个int*类型的指针变量,可以存储int类型的地址
printf("%p",p)://打印a的地址(打印地址是%p)
我们看别人代码的时候,别人可能是这样写指针变量的:
int a=0;//创建一个int整型变量
int *p=&a;//这种形式
发现这俩总主要是*号在哪,下面这种方式用的人最多,但是原本的写法是上面这种,但是这两种写法都一样,只是形式上的不同
(上面我们对指针有了简单的了解,指针就是存储变量地址的变量)
二.怎样通过地址来访问变量
我们来看这个例子
通过*号来访问地址对应的值,和直接打印变量的值是一样的;
通过地址来改变变量的值也是可以的。
三.指针类型的大小
既然指针存的是地址,那么地址的大小肯定是一样的,我们来看一下(在64位环境下):
果然不出所料,他们的大小都一样,那么,为什么要分这么多呢
四.指针的加减
当我们对指针进行加减的时候,看例子:
int*类型加一,地址增加了4
char*类型加一,地址增加了1
我们又知道int类型大小为4,char类型大小为1
所以我们得知不同类型的指针变量,加减可以跳过不同的距离,加一次可以跳过该类型的字节数
五.数组和指针
我们知道数组在内存中的存储是连续的
我们就用一个p指针来慢慢遍历这个数组,因为数组在内存是连续的,指针加减在内存也是连续
这里有一个小细节,数组名其实就是首元素的地址,所以,我们可以这样操作
未完待续。。。