k是一个指针,这句话的意思是k指向的地址中存放的变量值等于2,k=k*2;//将k乘以2并将结果赋值给k这个变量。
举例:如果a=2,k=&a,则执行*k+=2后,a=4,相当于执行了a=a+2。
k*=2等价于k=k*2;
k-=2k=k-2
k+=2k=k+2
k/=2k=k/2
k%=2k=k%2
扩展资料
C语言“->”运算符
C语言代码定义了结构体S,成员a代表0偏移,而成员b则代表2字节偏移(这里假设int变量占用2字节内存,也不考虑内存对齐)。
代码定义了结构体X,它也包含成员a,它的名字与结构体S中的成员a重复了,但是没有问题,因为它们都代表0偏移。因为结构体Y中的成员a与结构体S中的成员a重名,并且代表的字节偏移量也不相等。
k *=2 等同于 k = k * 2 。例如
int k = 10;
k *= 2; /* 运算后k的值=20*/
在C语言中,表达式k*=2 的运算符是 *= ,称为乘法自反赋值运算符。这个运算符的含义等同于 k=k*2
除了乘法自反赋值运算符,还有:
加法自反赋值运算符 += 例如 k+=2 ,等同于 k=k+2
减法自反赋值运算符 -= 例如 k-=2 ,等同于 k=k-2
除法自反赋值运算符 /= 例如 k/=2 ,等同于 k=k/2
等等
这个是简写 将其还原后的表达式为:
k = k * 2; // 将k乘以2并将结果赋值给k这个变量
这个的意思为左边的乘以右边的,赋值给左边的变量,即就说,s*=2等价为s=s*2,举一反三,s*=16+b+a*3等价为s=s*(16+b+a*3)。
k *=2 等价于 k = k*2;
与此类似的还有
k-=2 k=k-2
k+=2 k=k+2
k/=2 k= k/2
k%=2 k=k%2
还有很多类似的。