来看c/c++:
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int *p = &a;
*p++;
cout << *p << endl;
return 0;
}
结果是:-547285944
为什么呢? 在c/c++中, *p++是新计算*p, 然后执行p++, 所以cout << *p << endl时, p早就跑偏了。
来看看go:
package main
import (
"fmt"
)
func main(){
a := 10
p := &a
*p++
fmt.Println(*p)
}
结果是:11
为啥?因为在go中,指针没有加减运算, 所以++不可能作用于p, 作用的是*p, 所以结果为11
没啥好说的。