11.14C程序设计语言--指针类型

来源:互联网 发布:淘宝降价通知如何设置? 编辑:程序博客网 时间:2024/05/17 08:09

今天学习C程序设计语言点的重点还是指针,首先重点说一下对它分类的理解吧,尽管有无穷多种指针类型,但从指针所关联的数据类型方面看,指针可以分为3类:指向数据对象的指针(Object Pointer)、指向函数的指针(Function Pointer)、指向虚无的指针(“void *”类型)。前两者都与内存中的实体(数据和一段函数的执行代码)有关,而“void *”类型的指针则仅仅是一个值,是纯粹的地址。“指针就是地址”这样的说法对于“void *”这种类型的指针是成立的。但对于与一段具体内存实体相关联的指针类型来说,这种说法是极其片面的,甚至片面到了几乎完全忽略了指针的本质而只剩下了指针的皮毛的地步。正确的说法是,指针的值(右值)是地址,这与“指针就是地址”是完全不同的概念。学习指针最重要的内容通常是关心指针的值以外的东西,而指针的值—下面将会看到,那几乎倒是无关紧要的 。再说一下指向数据对象的指针,那什么是“数据对象”所谓“数据对象”(Object),含义就是(1)是内存中一段定长的、以byte为基本单位的连续区域。 (2)这段内存区域中的内容表示具有某种类型的一个数据。数据对象的类型不一定是简单数据类型(int、long、double等),也可以是派生类型,比如数组,甚至指针等。 而所谓的“指向”(Pointer to)的含义是指针与这块具有类型含义的整体的关联。例如,对于 int i; “i”可以表示它所占据的内存块,当说到某个指针指向“i”时,其确切的含义是指向“i”所占据内存的整体。显然这里提到的“i”是左值意义上的“i”。 函数类型不属于数据对象。 下来就讲到那个一元“&”运算 ,尽管前面各章从来没有提到指针,但实际上在前面所学编程的过程中已经和指针打过无数次交道了。呵呵~这可能令人感到吃惊,但却是事实哦。 比如,在调用scanf()函数输入变量值的时候,在实参中经常可以看到的“&”,实际上就是在求一个指向某个数据对象的指针。对于下面的变量定义 double d; 表达式“&d”就是一个指针类型的数据,类型是“double *”,这种类型的指针被称为是指向“double”类型数据的指针。 前面讲过,作为二元运算符,“&”是按位与运算。当“&”作为一个一元运算符时,要求它的运算对象是一个左值表达式(一块内存),得到的是指向这块内存(类型)的指针。而一个变量的名字的含义之一就是这个变量所占据的内存。我觉得大多数人在多数情况下关心的只是变量名的另一个含义—值,这可能就是以前我学不好指针的一个主要原因。必须注重各种细节,不能漏掉半点呀。否则有时候就是个偏差咯~~唉~才说了几个点啊???????就写了那么点,怎么时间就那么快就过去了啊啊啊啊啊~~~~之后要变一下风格才行,列重点来说吧,别讨论太多细节了。一点细节就写了一篇,都回顾不完!挖了个去~~只能说待续啦!!!!!继续加油~~~~

原创粉丝点击