C语言之对指针概念的初步探究

指针?什么是指针?

指针(pointer)是一个值为内存地址的变量(或数据对象)。

接下来从变量的角度分析:

变量有两个属性,一个是地址,一个是值。

指针与普通变量的不同之处在于:指针变量的值是一个内存地址。

 

变量有两个属性:那么获取这两个属性的方式就是使用以下两种运算符

取址运算符 &

后跟一个变量名,&给出该变量的地址;

间接运算符 *

后跟一个指针名或地址时,*给出储存在指针指向地址上的值;

指针的意义何在?

指针提供一种以符号形式使用地址的方法。

因为计算机硬件指令非常依赖地址。

指针在某种程度上把程序员要传达的指令以更接近机器的方式表达。

指针使程序更有效率。

尤其是指针能有效处理数组。数组表示法实际上是变相使用指针。

 

大概有哪方面的知识点:

1、指针和数组、多维数组、数组指针、

2、指针和函数、函数间的通信、函数指针、

3、指针作为形参

4、指针操作

5、指针数组

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

什么是变量?什么是数据对象?什么是内存地址?什么是值?

计算机中有内存,内存用于存储程序中的数据。

内存实际上就是一个块可供CPU访问的存储区域,存储空间。

访问内存,要知道访问哪一块区域,于是就要有内存地址来描述内存特定的储存空间。

存储空间存储单元是一个字节。用内存地址来描述每个字节的存储空间。

存储单元存的数据就是

C语言提供了不同的模型和存储类别,在内存中储存数据。

被内存存储的每一个值都占用一定的物理内存,C语言这样一块内存称为对象。或者叫数据对象。

注意这根面向对象编程中的类对象不是一个概念。

程序需要一种方法访问对象---->声明变量,变量用标识符表示,这样软件就可以通过标识符来指定物理内存中的对象了。

变量标识符(变量名)是内存对象的一种访问途径。

当然途径不止这一种,还有一种途径就是指针

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

函数指针:

函数指针是指向函数的指针变量。是一个指针,指向一个函数。

因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。

这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。

如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。

有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。

函数指针有两个用途调用函数做函数的参数

 

int func(int x);  //声明一个函数

int (* f)(int x);  //声明一个函数指针,包含了要指向的函数原型信息;int是返回值, 圆括号内的int x是形参参数信息;

于是就有如下操作:

f=func; /* 将func函数的首地址赋给指针f */

f = &func; //或者这么赋值给指针

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 待补充。。。。。。

posted @ 2018-11-05 20:01  Grooovvve  阅读(176)  评论(0编辑  收藏  举报