1个回答
展开全部
第5行:指针ptr指向了变量a的内存地址,这个时候ptr本身储存的是变量a的内存地址,*ptr就是告诉编译器根据这个地址去查找对应的值
第6行:*ptr = 3
改变这个指针指向内存地址的值,画个图你就明白了 *ptr -> a = 3
现在a的值就被改变了,变成了
第7行:a = (*ptr)++
先运算括号内容,*ptr -> a,所以在这里等同于 a = (a)++,表达式实际上表达的是这个意思:a = a++
从右向左运算,a++,再赋值回a。题外话:
a++ 等同于 a = a + 1,运算完后返回a的值;
++a 也等同于 a = a + 1,但是是在运算前返回a的值。
了解了这个之后,再来看 a = a++,首先先给 a + 1,此时 a 的值为4,然后将4赋值给a(变成数学表达式就相当于4=4),所以变量a的最终值是4。
第8行:输出a和*ptr,因为*ptr -> a,所以 *ptr 返回的就是 a 的值,所以答案是4,4
第6行:*ptr = 3
改变这个指针指向内存地址的值,画个图你就明白了 *ptr -> a = 3
现在a的值就被改变了,变成了
第7行:a = (*ptr)++
先运算括号内容,*ptr -> a,所以在这里等同于 a = (a)++,表达式实际上表达的是这个意思:a = a++
从右向左运算,a++,再赋值回a。题外话:
a++ 等同于 a = a + 1,运算完后返回a的值;
++a 也等同于 a = a + 1,但是是在运算前返回a的值。
了解了这个之后,再来看 a = a++,首先先给 a + 1,此时 a 的值为4,然后将4赋值给a(变成数学表达式就相当于4=4),所以变量a的最终值是4。
第8行:输出a和*ptr,因为*ptr -> a,所以 *ptr 返回的就是 a 的值,所以答案是4,4
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询