最近在学数据结构,发现里面几乎都要用到指针,这让我不得不复习一下指针,毕竟指针是c语言的灵魂,弄明白了这个,学其方面也有帮助,所以现在我们第一天先浅谈指针。
一、指针概念:
1、什么是指针?
在讲指针之前,要明白“地址”这个概念(因为这个是理解指针的小前提):寄快递想必大家都不陌生吧,在寄快递的时候,你必须得填写收件人的所在地方(也就是地址),这样快递公司才好运送。
从这个简单的例子可以看出,地址就是一个标记识别符,你得知道它在哪里,才方便办事,虽然这个例子不太好,但还是有助于理解(在计算机里面,地址是内存单元的编号,是一个从0开始的非负整数,范围是从0----0XFFFFFFFF(0---4G-1),注意这里的0XFFFFFFFF是32位操作系统的内存空间大小)。好了,例子说完了,回归主题;指针就是地址就是地址,地址就是指针,指针本质是一个操作受限的非负整数,是不是好理解,hhh 。
2、什么是指针变量,什么是变量指针?
自己一开始学习指针的时候,被这个弄晕了头,老是弄错了,很是伤脑筋;那我们来看一下他们的区别吧(也是对自己再一个学习):
a、指针变量:它是一个存放内存单元地址的变量。
b、变量指针:简单来说就是变量的地址
我们还是来看一个简单的代码来理解:
1 #include <stdio.h> 2 int main() 3 { 4 int * p; //p是一个变量名字,int * 表示该p变量只能存储int类型变量的地址 ,也就可以理解上面那个指针变量 5 int i=10; 6 int j; 7 8 9 p=&i; //这里的"&"是一个取地址符号,把i变量的地址取出来赋给指针p,这里可以理解上面那个 变量指针,也就是说的变量地址,因为其实每个变量在内存单元中都有一个地址标识符 10 printf("%p ",p); #打印出p的地址 11 }