指针指针!!

Posted whtmomo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针指针!!相关的知识,希望对你有一定的参考价值。

认识指针以及学会使用指针

本人对于指针的认识只是停留在如何基础的使用的层面上,指针是C语言的核心,也是因为指针,使得C语言能够如此的灵活多变。

注:本文章也仅限于个人观点,如有纰漏,还望指出,肯请谅解

(一)认识指针

指针,什么是指针,意思是指向什么东西的标志。

指南针指向南方,是指针;高速路上的指示路标箭头,那也是指针。所以,不要害怕指针这个新名词,任何名称诞生的时候都是为了让人们容易理解容易记住。所以呢,,不要把它想得太复杂。。

与如上所说的指针类同,C语言的指针也是指向某个东西的标志。那么C语言指针指向的是什么呢?
是地址,那什么又是地址呢?
计算机的内存是一片连续的空间,每一个子单元都有它的地址,也就是它的位置,地址是独一无二的。就相当于你家庭住址—重庆市江北区XX街道XX小区X单元。

那么,指针也就是家庭住址的路标了,也就是一个箭头,它会在上面标明,“我指的方向是善良先生的家!”

懂了吧,联系生活实际来想这个问题就不会那么枯燥无味,也更好理解。

(二)定义指针类型

1 int a = 4; //类型为int整型的变量a赋值为4
2 int *p; //定义一个指向int类型的指针变量p
3 //相似的,char *p 意味着指向char类型的变量p
4 p = &a; //&符号是取地址符号,scanf()函数里的&符号的作用也是一样
5 //那么,到这里,指针p就是a的指针了。

 

那么,要如何使用使用指针呢?

printf("%d",*p); //*p的作用是取值,也就是获取它所指向的位置的值

 

然而,有一个对于大家可能有点疑惑的问题就产生了,如下:

int *p;
printf("%d",*p); //这两个*p的作用是不一样的

 

为什么都是*p 含义会不一样呢

int *p;
int* p; //这两种定义方式是相同的
/*这里的*符号的含义是:将p命名为一个指针;
为了容易懂哈,可以这么想
你是一个皇上,你又至高无上的权力
现在,你想要把p这个人命名为“指针”
为了好区分它的身份,所以你给了它一个官印“*”
*/
*p = 4; //而这里的*号是不一样的,这里的作用是取值,取值取值,也就是取出它的值,仅此而已

 

对于指针的基础认识和定义方式在这里讲完了,我个人认为还是挺通俗易懂的吧。。如果还有不懂的,请在下方留言~
接下来会将两个内容:1.指针类型做函数形参 2.指针类型作为函数返回类型
希望大家支持

以上是关于指针指针!!的主要内容,如果未能解决你的问题,请参考以下文章

片段中的空指针异常

使用回收器适配器获取空指针

片段 getArguments() 空指针异常

访问片段的子视图时出现空指针异常

活动到片段通信:当我尝试从活动更新片段中的文本视图时,出现空指针异常

空指针异常 - 片段活动