学习冒泡排序时遇表达式*x = *x +1,是给x的地址还是值加1?
关于表达式
*x = *x + 1的解释 视频里的说法是正确的,这个表达式的作用是给指针x指向的变量的值加1,而非修改x本身存储的地址。
核心概念区分:
*x是解引用操作符:它的作用是访问指针x所存储的内存地址对应的变量值,而不是操作指针x自身的地址。- 如果要给
x的地址(即指针变量x存储的地址值)加1,写法应该是x = x + 1或x++,这时候才会让指针x指向内存中偏移一个数据类型长度的位置(比如int*指针会偏移4字节,具体取决于系统和数据类型)。
实际代码示例:
int num = 5; int *x = # // x存储的是num的内存地址 *x = *x + 1; // 解引用x,获取num的值(5),加1后赋值回num // 执行后,num的值变为6,x存储的地址仍然是&num,没有变化 // 如果是修改指针地址的操作 x = x + 1; // x现在指向num之后的内存地址,不再指向num
内容的提问来源于stack exchange,提问作者Sir-LaughALot
相关产品推荐
相关产品推荐

