指针

(1)指针的概念
在我们的编程生涯中其实我们一直是在围绕着数据做各种操作,而指针其实也不例外。大家都知道int a是一个整形的变量,a可以等于3或者4等整形的数据,而指针int *p可以存放的就是一个地址,如果p = &a那么指针p存放的就是a这个变量的地址。
 (2)指针的类型
通过第一个点我们的同学知道了指针的概念,好的接下来我们还要知道指针的类型。跟基本数据类型分为整型,浮点型,字符型一样我们的指针也是有类型的。而他的类型十分简单,根据第一点我们知道指针是存放各种数据地址的,如果他存放的是整形的地址,好的!这个指针就是指向整形的指针。以此类推指针又可以分为浮点类型的,字符类型的等等。
       Int a ;
       Int *p = &a;(整形指针)
       Char a;
       Char *p = &a;(字符型指针)
       Double a ;
       Double *p = &a(浮点型指针)
 
     (3)指针的作用
       相信通过前面的两点,大家已经知道什么是指针了,并且已经跃跃欲试想要使用指针了。别急~~~下面老夫就为大家介绍怎么使用指针,来!举个例子。
       Int a = 10;
       Int *p = &a;
       *p = 0;
       看到上面的几行代码,有没有同学知道a变成了几?对!同学们很聪明,现在的a已经变成了0.这就是指针的最重要的作用,间接赋值。这四个字老夫请大家一定要记住,就像你的支付宝密码一样的记住。当有人能问你指针的时候,说出这四个字是保证你不被当成小白的重要保证。
(4)指针数组和数组指针
指针数组和数组指针这两个名字不同,当然所代表的意思也就不同。刚开始看到我就被吓到了,主要是中文太博大精深了,整个这样的简称太专业了,把人都给绕晕了。如果从英文解释或中文全称看就比较容易理解。

指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针
数组指针:a pointer to an array,即指向数组的指针

还要注意的是他们用法的区别,下面举例说明。
--------------指针----------------
int a=10;
int *p=&a;           // 指向整型的指针,这个指针可以用来指向整型元素

-------------简单数组-----------------
int c[10];              //整型数组,含有10个整型元素也就是说每一个元素都是整型

--------------指针数组 是数组--------------------
int *p1[10];         // 指针数组,含有10个指针元素也就是说每一个元素都是指针

--------------数组指针 是指针--------------------
int (*p2)[10];      // 数组指针,这个指针可以用来指向含有10个元素的整型数组
<ignore_js_op>
注意:在实际应用中,对于指针数组,我们经常这样使用:
typedef int* int_p;
int_p a[10];
这跟上面指针数组定义所表达的意思是一样的,只不过采取了类型变换。
原文地址:https://www.cnblogs.com/yejianyong/p/7118386.html