【更新】2012-5-17,增加内容
【问题描述】
看下列4组概念:
(1)
*dates+2
*(dates+2)
(2)
*str++;
(*str)++;
*++str;
*(++str);
(3)
const int * pt;
int * const pt;
(4)
int * func(int a, int b);
int (* func)(int a, int b);
这4组概念怎样区分呢?下面从结合性的角度出发,来分析考虑。
【分析】
(1)
*dates+2
*(dates+2)
第一组概念,很多朋友都已经弄清楚了。
从结合性看上述概念,*(间接访问)操作符优先于+(加法)操作符。故*dates+2等价于(*dates)+2。也就是先对指针dates解引用,取出dates的内容。再对dates的内容+2。
而对于*(dates+2),()操作符优先于*和+操作符。故先计算dates+2,即将指针指向dates的第3个内存地址。再对该地址解引用,取出内存的内容。
(2)
*st