C和指针 第十三章 高级指针话题

高级声明:

int (*f)();

这里声明有两个括号,第二个括号是函数调用,第一个括号是聚组作用。(*f)是一个函数,所以f是指向返回整型的函数的指针。程序中的每个函数都位于,内存中某个位置,所以存在指向那个位置的指针。

int *f[];

下标的优先级高,所以f是个数组,数组中元素为指向int的指针。

int (*f[])()

首先按照优先级进行分析,括号内(*f[])先求值,所以*f[], f是数组,数组元素是指向某种类型的指针,结合外面的看,f是一个数组,数组元素是指向返回int类型的函数的指针。

函数指针:

指针在使用前需要进行初始化,对于函数指针,访问前需要初始化为指向摸个函数。

int fuc(int);

int (*fPtr)(int) = &fuc;
//在函数初始化之前需要具有fuc的原型,否则,编译器无法检查fuc的类型是否与fPtr一致。

  

时间: 2024-10-19 18:37:37

C和指针 第十三章 高级指针话题的相关文章

第十三章 高级指针话题指针

1.对于指针p分清楚printf    p/&p/*p这几个储存的区别(对指针内部储存操作/对指针地址操作/对指针内部储存地址指向变量操作) 2.我们使用指针进行间接访问的赋值,因为简单的赋值不一定可行,例如在链表的插入中.在那些函数我们无法使用简单的赋值,因为变量名在函数的作用域内部是未知的.函数所拥有的只是一个指向需要修改的内存位置的指针. 3. int f(); f为一个函数,返回值为一个整数. int *f(); f为一个函数,返回值为一个指向整型的指针. int (*f)(); f是一

C和指针 第十三章 习题

1,1标准输入读入字符,统计各类字符所占百分比 #include <stdio.h> #include <ctype.h> //不可打印字符 int isunprint(int ch){ return !isprint(ch); } //转换表,储存各个判断函数指针 int (*tables[])(int) = {iscntrl, isspace, isdigit, islower, isupper, ispunct, isunprint}; int main() { int co

【WPF学习】第三十三章 高级命令

前面两章介绍了命令的基本内容,可考虑一些更复杂的实现了.接下来介绍如何使用自己的命令,根据目标以不同方式处理相同的命令以及使用命令参数,还将讨论如何支持基本的撤销特性. 一.自定义命令 在5个命令类(ApplicationCommands.NavigationCommands.EditingCommands.ComponentCommands以及MediaCommands)中存储的命令,显然不会为应用程序提供所有可能需要的命令.幸运的是,可以很方便地自定义命令,需要做的全部工作就是实例化一个新的

javascript高级程序设计 第十三章--事件

javascript高级程序设计 第十三章--事件js与HTML的交互就是通过事件实现的,事件就是文档或浏览器窗口中发生的一些特定的交互瞬间. 事件流:事件流描述的是从页面中接收事件的顺序,IE的是事件冒泡流,Netscape的是事件捕获流,这个两个是完全相反的事件流概念. 事件冒泡:由最具体的元素接收,然后逐级向上传播到更高级的节点,即事件沿DOM树向上传播,直到document对象. 事件捕获:不大具体的节点应该更早接收到事件,相当于沿DOM节点树向下级传播直到事件的实际目标,在浏览器中,是

《javascript高级程序设计》第十三章知识点

第十三章知识点总结 1.事件流: ①事件冒泡:事件开始时由最具体的事件接受,逐级向上传播到较为不具体的节点. ②事件捕获:不太具体的节点更早的接受事件,最具体的节点应该最后接到事件. 事件流包括三个阶段:事件捕获阶段.处于目标阶段.事件冒泡阶段. 2.事件处理程序 3.事件对象 IE 属性 除了上面的鼠标/事件属性,IE 浏览器还支持下面的属性: 属性 描述 cancelBubble 如果事件句柄想阻止事件传播到包容对象,必须把该属性设为 true. fromElement 对于 mouseov

C和指针第13章第4题

题目:编写一个函数,它用于对一个任何类型的数组进行排序. 算法核心代码sort函数实现 /** 功能说明:sort函数可以对不同类型的数据进行排序 参数: 1.一个指向需要排序的数组的第一个值的指针. 2.数组中元素的个数. 3.每个数组元素的长度. 4.一个指向比较回调函数的指针 **/ void sort(void *array,int size,int element_size,int (*cmp)(void const *a,void const *b)) { char *pc = (c

C和指针 (pointers on C)——第六章:指针(上)

第六章 指针 这一章,就明显触痛初学者敏感之处了.我也是在一段时间不用C以后就会对这一部分生疏,好吧,其实是对高级指针那块生疏. 当然这一部分总有很多借鉴之处,比如数组范围的问题等,要不我也不会大夏天的这么虐自己看这种书. 总结: 指针变量的值并非它所指向的内存位置所存储的值,而是保存了指向的变量的地址.需要通过间接访问符*来访问指向的变量的值. 单单声明一个指针,而并不进行初始化,是不会分配内存的.所以在指针执行间接访问之前,指针必需进行初始化. 要么指向某个变量.要么去malloc一个内存.

C和指针 (pointers on C)——第六章:指针(下)习题

有一定的难度,作者只做了前三题! 题目请见 http://download.csdn.net/download/wangpegasus/5701765 1. char *find_char(char const *source, char const *chars) { char *ptr; if(source != NULL && chars != NULL) { for (; *source != '\0'; source++) { for (ptr = (char *) chars;

C和指针第七章第五题

实现一个简化的printf函数,能够处理%d,%f,%s,%c等格式. /************************************************************************* > File Name: permutation.c > Created Time: 2014年06月17日 星期二 23时22分34秒 *********************************************************************