C语言与汉语结构类比理解入门之指针
作为我们母语的汉语,我们在学习它的时候,不可能从一岁起,一上来就去读句子,读文章,这肯定是很难很难的,也是不现实的。所以,我们需要花很久很久甚至整个童年去熟悉拼音,单字,词性,短语,长句,然后是整个文章。
类比汉语言的学习C语言也是一门语言,它也是需要按照学习汉语的方式去逐步推进的,当然C语言的历史和发展了几千的汉语是无法比较的。但即使它比汉语简洁多少,它也是一门协议语言,既然是语言就需要按语言获得的方式才能很好的应用它。
下面我们就C语言入门阶段最繁杂的指针部分进行一个汉语言对应分析。
1.汉语言拼音单字阶段:在C语言中也就是各个协议定好的与计算机的沟通方式,比如 include,main,这些本来是毫无意义的,就好像我们汉语中任何字也本无任何意义,都是几千年的约定俗成,C语言也一样。这个阶段我们的任务就是不断的扩充重复让自己有很大的俗成的词的量。
放在指针这一块的应用,我们需要熟悉也就是。Char*p,int*p,float*p,这些代表符号表示的是什么。
拿最简答的int*p来说明的话,int*表示的整型指针的类型,p是变量,合起来int*p,也就是将p定义为int型指针的含义。
什么叫指针呢?指针其实也就是C语言中的一种词类型,它和整型,以及浮点型是并列的数据类型。
知道了指针是一种数据类型,然后我们接下来来考虑它的数据类型特点,还拿最简答的int A来举例子,它是什么样的数据类型呢?
Int A
地址区: 王二| 内容区 :王二的糖葫芦
很显然int p 就是一个存在一个地址的和一个内容的计算机数据。
对应 int*p 的分析
地址区:李四 内容区:李四的糖葫芦
如果单纯这样看来,指针型变量和整型(int)也没什么区别,但是指针最大的一个变化就是,他的内容区存放的是其他数据地址区的地址。这也就是指针变量到底是什么,也就是说 李四的糖葫芦=王二,这就是C指针单字阶段的内容。
2多字短语阶段阶段:在分析了指针的基本类型特点之后,我们将对他进行简单应用。
然后还按上面Int A 和Int*p来对指针来进行初步分析。
Int A和Int*p在使用前需要初始化,我们下面还将将它们两初始化成上面例子的样子。
初始化的表达方式是。
Int A = 内容区 :王二的糖葫芦,地址区在定义这个变量时已经自动开辟,A的地址区:王二。
指针变量p的初始化方式。
Int *p = &A,对这个句子进行分析,也就是p的内容区的内容是A的地址区的内容。也就是是内容区:李四的糖葫芦=地址区: 王二 。
这样的话指针变量就定义完毕,它就是一个本身内容是别的变量地址的变量。
3句子阶段:
在明白指针数据类型特点及其初始化之后,我们将其结合输出函数进行具体分析,也就相当于由词构成了一个句子。
按上面Int A 和Int*p初始化完成之后来对指针来进行初步分析。
Int A
地址区: 王二| 内容区 :王二的糖葫芦
int*p
地址区:李四 内容区:李四的糖葫芦
Int A = 内容区 :王二的糖葫芦
Int *p = &A
这是初始化语句。
初始化后我们对它存在在C语句中进行进一步分析。
Printf(“A= %d\n”,A);这是取A内容区,也就是王二的糖葫芦 。
Printf(“&A = %p\n”,&A );这是取A地址区,也就是王二|
Printf(“p = %p\n”,p );这是取p的内容区,也就是内容区:李四的糖葫芦
Printf(“*p = %d\n”,*p );这是从p指向的地址中的内容,也就是A的内容也就是内容区 :王二的糖葫芦。
还有就是要记得的是,王二=李四的糖葫芦,这是因为我们之前已经对p和A已经进行了初始化,让其二者产生了相应的关联。
4段落内容阶段:
这也就是语言学习的最后一个阶段,将上述指针的内容应用到每一种数据类型,会有字符型的指针,会有数组类型的指针。然后这些东西再逐步添加各种各样的应用功能,最后利用指针做出来一个大的源数据。
本文介绍的内容只是指针最基础入门的内容,但是相信只要掌握了正确的方式和思维方式,拿下C语言,最后做出来一个成熟的代码只是时间问题。
本人也在逐步精进,各位路上的人共勉。欢迎提问及意见。