void* f(int); //一个指针函数f
专注于为中小企业提供成都网站制作、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业融安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
void*(*p)(int) = f; //一个指向f的函数指针p
在最上面加一句这样的定义
typedef void*(*pFn)();
pFn可以这样理解:首先pFn是一个指针,指针指向一个函数(或者说pFn是一个函数指针),此函数返回一个无类型的指针。最终定义的变量及函数都是指针罢了,不过是指针的类型不同。所以在编译时会有警告,说指针类型不匹配。但对于程序来讲,都是可以在特定的上下文中使用的。
运行结果是
t1,t2交替出现。
其实void也可以换为其它的类型如int, double等
又想到一个很好的办法:
这次编译不会有警告,运行也不会出错。
示例代码如下所示
#include stdio.h
long t1();
long t2();
int main()
{
long(*fn)()= (long (*)()) t1 ;
while(1){
fn = (long (*)()) fn();
}
}
long t1()
{
printf("t1\n");
return (long)t2 ;
}
long t2()
{
printf("t2\n");
return (long)t1 ;
}
指针是常见间接访问方式.指针就像一个快捷方式,它指向内存的一个地址,可以通过指针就可以间接的访问到数据。对于计算机,访问内存的方式有两种,直接访问和间接访问。直接访问通过就是通过变量名称去访问。指针概念是构成C/C++的重要元素之一,是变量的一种类型,存放的是指定类型数据的地址,而同类型变量存放的是数据。
指针变量:就是一个变量,其值是可变的,与整形变量、浮点变量等等的命名规则完全相同。 “指针”是概念,“指针变量”是具体实现。指针类型说明,即定义变量为一个指针变量; 指针变量名; 变量值(指针)所指向的变量的数据类型。
扩展资料:
与其他高级编程语言相比,C 语言可以更高效地对计算机硬件进行操作,而计算机硬件的操作指令,在很大程度上依赖于地址。指针提供了对地址操作的一种方法,因此,使用指针可使得 C 语言能够更高效地实现对计算机底层硬件的操作。另外,通过指针可以更便捷地操作数组。在一定意义上可以说,指针是 C 语言的精髓。
我们知道变量在计算机内是占有一块存贮区域的,变量的值就存放在这块区域之中,
在计算机内部,
通过访问或修改这块区域的内容来访问或修改相应的变量。turbo
c语言中,
对于变量的访问形式之一,就是先求出变量的地址,然后再通过地址对它进行访问,这就是这里所要论述的指针及其指针变量。
所谓变量的指针,
实际上指变量的地址。变量的地址虽然在形式上好象类似于整数,
但在概念上不同于以前介绍过的整数,
它属于一种新的数据类型,
即指针类型。turbo
c中,
一般用指针来指明这样一个表达式x的类型,而用地址作为它的值,也就是说,
若x为一整型变量,
则表达式x的类型是指向整数的指针,而它的值是变量x的地址。同样,
若double
d;则d的类型是指向以精度数d的指针,而d的值是双精度变量d的地址。所以,
指针和地址是用来叙述一个对象的两个方面。虽然x、d的值分别是整型变量x和双精度变量d的地址,
但x、d的类型是不同的,
一个是指向整型变量x的指针,
而另一个则是指向双精度变量d的指针。在习惯上,很多情况下指针和地址这两个术语混用了。
我们可以用下述方法来定义一个指针类型的变量。
int
*ip;
首先说明了它是一指针类型的变量,注意在定义中不要漏写符号*,否则它为一般的整型变量了。另外,在定义中的int
表示该指针变量为指向整型数的指针类型的变量,
有时也可称ip为指向整数的指针。ip是一个变量,
它专门存放整型变量的地址。
指针变量的一般定义为:
类型标识符
*标识符;
其中标识符是指针变量的名字,
标识符前加了*号,表示该变量是指针变量,
而最前面的类型标识符表示该指针变量所指向的变量的类型。一个指针变量只能指向同一种类型的变量,
也就是讲,
我们不能定义一个指针变量,
既能指向一整型变量又能指向双精度变量。
指针变量在定义中允许带初始化项。如:
int
i,
*ip=i;
注意,
这里是用i对ip初始化,
而不是对*ip初始化。和一般变量一样,对于外部或静态指针变量在定义中若不带初始化项,
指针变量被初始化为null,
它的值为0。turbo
c中规定,
当指针值为零时,
指针不指向任何有效数据,
有时也称指针为空指针。因此,
当调用一个要返回指针的函数时(以后会讲到),
常使用返回值为null来指示函数调用中某些错误情况的发生。
指针就是地址。
你说的是指针变量。
整形变量,浮点变量,字符变量,指针变量。通过起名的规律就知道指针变量是储存地址的。
指针变量和其他变量的用法一样,作用域一样。在一个子涵数中定义指针变量,是局部变量,其他函数是不能用的。
不要把指针变量想的太复杂,地址(指针)也是数据,和其他字符数据,整形数据一样,没什么差异。
当然,全局变量的指针变量当然可以多函数使用。
指针的定义:地址。
指针变量的定义:存储指针的变量。