|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
int arra[5] = { 1,5,999,84,65 };
int* p = arra;
cout << *p << *(p+1)<<*(p+2)<<endl;
cout << *p << *p+1 << *p + 2<<endl;
为何一个输出是 1,5,999
一个输出是1,2,3,。。。。。
有括号和没括号的指针到底有啥区别?
求大神赐教~
本帖最后由 jackz007 于 2020-1-7 22:42 编辑
* p + 1 : 运算符 * 的优先级高于 +,所以,* p + 1 是对指针所指的整数的值加 1,p 指向 array 的开头,也就是第一个元素,* p = array[0] = 1,所以,* p + 1 = array[0] + 1 = 2,* p + 2 = array[0] + 2 = 3;
* (p + 1) : p 是指向整型数的指针,p 的步进单位是 4 个字节(1 个整型数占用的内存字节数) ,与一维整型数组元素的内存步进单位相一致。由于 p 指向了 array[0],所以,* p = array[0],* (p + 1) = array[1],* (p + 2) = array[2]
|
|