这个涉及到运算符的优先级问题,类似的问题还有指针函数、函数指针。“()”运算符优先级高于“[]”高于“*”所以char * str[20]中str相与“[]”先结合,就成了str[],这是什么?数组!没错,这就是数组,接下来str[]在于“*”结合,就成了*str[],所以这个式子就可以这样写: char *(str[20]);这就是指针数组,什么是指针数组?指针数组就是数组里面装的是指针,你可以这样来理解,整形数组里面装的是整形数据,那么指针数组里面装得就是指针,指针数组其实就是二维数组。另一个就很简单了吧,由于“()”优先级最高所以先运算“()”里的内容,*str,这是指针,然后在于“[]”结合,这就是数组指针,什么是数组指针?数组指针就是指向数组首地址的指针,你也可以这样来理解,int *p;p指向的是int类型数据的地址,那么数组指针呢?就是指向数组首地址的指针。总结:指针数组是数组,数组的内容是指针;数组指针是指针,指针指向的值数组的首地址。现在明白了吧,你可以试着去理解指针函数和函数指针吧 如:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。
数组指针与指针数组的区别(函数指针与指针函数类似)
最新推荐文章于 2014-10-12 21:10:26 发布