读书笔记--C和指针---第13章---高级指针话题

来源:互联网 发布:对于人工智能的看法 编辑:程序博客网 时间:2024/05/20 11:50

2013年9月26日9:43:55

1. 各个数据的类型

int a;//a是一个整型变量int *a;//a是一个指针变量,它指向整型,即一个指向整型的指针int **a;//a是指针的指针,它指向的是整型int a[10];//a是一个数组,它里面的元素是整型数据int *a[10];//下标的优先级高于间接访问操作符,所以a先和[10]结合,再和*结合            //所以,a是一个数组,它的元素类型是指向整型的指针 (称之为:指针数组,核心是数组,其中元素是指针)int (*a)[10];//a先和间接访问操作符结合,再和取下标结合            //所以,a是一个指针,它指向的是一个整型数组  (称之为:数组指针,核心是指针,指向的是数组)int a();//a是一个函数,此函数无形参输入,返回值为整型int *a();//函数调用符的优先级高于间接访问操作符,所以a先和()结合,再和*结合         //所以,a是一个函数,此函数的返回值是指向整型的指针int (*a)();//a先和间接访问操作符结合,再和函数调用操作符()结合            //所以,a是一个指针,它指向的是一个函数,此函数的返回值是一个整型值            //即,a是一个函数指针,它所指向的函数返回一个整型值  (称之为:函数指针)          int (*a[])();//先对括号内表达式*a[]进行求值,所以a是一个元素为某种类型的指针的数组,即它是一个数组,其元素类型是指针,但此指针的指向还没确定             //再结合函数调用符,所以a是一个数组,数组元素类型是函数指针,它所指向的函数的返回值是一个整型值int *(*a[])();//此指令和上面的区别是,多了一个间接访问操作符。              //所以此声明创建了一个指针数组,指针所指向的类型是返回值为整型指针的函数。区别只是在所指向的函数的返回值类型。/*总结:简介访问操作符*的优先级很低,它低于下标[],函数调用符()等。最先和变量名a结合的,也就是最里层的最核心的最根本的,这个就决定了a到底是什么东西。而返回值,应该看表达式的最外层。*/


原创粉丝点击