int *a =*b,*a = 1 ,b指針指向的值是否改變
时间: 2023-12-22 14:06:11 浏览: 26
在这段代码中,`b` 是一个指向整型指针的指针,`a` 是一个整型指针。当执行 `int *a = *b` 这行代码时,会将 `b` 所指向的整型指针解引用,获取它所指向的值,并将其赋值给 `a`。此时,`a` 和 `b` 指向的是同一个整型数据。
如果之后执行 `*a = 1` 这行代码,会修改 `a` 所指向的值为 1。由于 `a` 和 `b` 指向的是同一个内存位置,因此也会改变 `b` 所指向的值。
换句话说,修改 `a` 所指向的值会改变 `b` 所指向的值,因为它们实际上是指向同一个内存位置的两个指针。
需要注意的是,在执行 `int *a = *b` 之前,需要确保 `b` 是有效的且非空,并且在解引用操作时需要确保它所指向的整型指针是有效的。同时,还需要确保 `a` 的指针目标内存空间的有效性。
相关问题
int *a = (int *) b->priv
在这段代码中,`b` 是一个指针,它有一个成员 `priv`。假设 `priv` 是一个指向整型的指针。当执行 `int *a = (int *) b->priv` 这行代码时,首先通过 `b->priv` 获取指针 `priv` 的值,然后进行强制类型转换,将其转换为指向整型的指针,并将结果赋值给指针 `a`。
此时,`a` 是一个指向整型的指针,它指向的是 `b->priv` 所指向的整型数据。如果之后修改了 `a` 所指向的值,那么会改变 `b->priv` 所指向的值,因为它们实际上是同一个内存位置。
换句话说,修改 `a` 所指向的值会改变 `b->priv` 所指向的值。它们共享相同的内存。
需要注意的是,在执行 `int *a = (int *) b->priv` 之前,需要确保 `b->priv` 是有效的且非空,并且进行类型转换时确保类型匹配,否则可能导致未定义行为或错误。同时,还需要确保 `a` 的指针目标内存空间的有效性。
int * a = *b 若指針a指向的值改變,指針b指向的值是否改變
在这段代码中,`a`是一个指向指针的指针,`b`是一个指针。当执行 `int *a = *b` 这行代码时,会将指针 `b` 所指向的值(即另一个指针)赋值给指针 `a`。
如果之后修改了指针 `a` 所指向的值,也就是通过 `*a = ...` 进行修改,这不会直接影响到指针 `b` 所指向的值。因为 `a` 和 `b` 是不同的指针,它们存储在不同的内存位置。
换句话说,修改指针 `a` 所指向的值不会改变指针 `b` 所指向的值。要改变指针 `b` 所指向的值,需要直接操作指针 `b` 或者通过其他方式修改它所指向的内存。
需要注意的是,在执行 `int *a = *b` 之前,需要确保指针 `b` 是有效的且非空,否则可能导致未定义行为或错误。同时,还需要确保指针 `b` 所指向的值的类型与指针 `a` 的类型匹配。