指针?什么是指针?
指针(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; //或者这么赋值给指针
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
待补充。。。。。。