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

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到底是什么东西。
	而返回值,应该看表达式的最外层。
	*/


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值