我想用"p->m_iX = 某值;"來進行賦值,在更新指針"++p"時,正好看下p指向的地址和p[i]的地址是否一樣,結果卻并不相同,為什么?
int?main()?{ ????//堆實例化 ????Coordinate?*p?=?new?Coordinate[3]; ????printf("數組的第1個元素的地址:%x\n",?p); ????printf("數組的第1個元素的地址:%x\n\n",?&p[0]); ????++p; ????printf("數組的第2個元素的地址:%x\n",?p); ????printf("數組的第2個元素的地址:%x\n\n",?&p[1]); ????++p; ????printf("數組的第3個元素的地址:%x\n",?p); ????printf("數組的第3個元素的地址:%x\n\n",?&p[2]); }
結果是:
數組的第1個元素的地址:3bc04b60 數組的第1個元素的地址:3bc04b60 數組的第2個元素的地址:3bc04b68 數組的第2個元素的地址:3bc04b70 數組的第3個元素的地址:3bc04b70 數組的第3個元素的地址:3bc04b80
為什么只有第一個元素的p和&p[0]指代的地址相同?
2015-06-16
如果你采用++p了,那么你這個時候就不能使用p[1]或者是p[2]了,這個時候,你應該是用p[0],如果你不用++p的話,那么你就可以用你現在這個方法了