c - 在不使用 & 或 * 的情况下使两个指针相等?

标签 c pointers

我试图理解这段代码的作用(以及它是否被允许):

int * A;
int * B;
A = (int *)malloc( size_t somenumber );
B = A;

// bunch of stuff using B, B++, etc.

我读过的所有内容总是显示使用引用运算符 (&) 或解引用运算符 (*) 将事物等同于指针。

这种等同有什么作用?

而且,当我最终free(A) 时,B 会怎样?

最佳答案

这不是使两个指针相等,而是指针赋值。一次

B = A;

被执行时,两个指针都指向相同的内存区域:访问 *B 与访问 *A 完全相同,B[i] 等同于 A[i],依此类推。

请注意,释放 A 会使 B 悬空,反之亦然。也就是说,调用之后

free(A);

访问 *B 成为未定义的行为。

关于c - 在不使用 & 或 * 的情况下使两个指针相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975047/

相关文章:

c - 为什么这个条件表达式的大小是 float ?

c++ - std::function不起作用,但是普通的旧函数指针起作用-为什么?

c++ - 删除后指针还能用吗?

c - 为什么我的程序打印出奇怪的数组值?

c++读取csv文件并操作数据然后打印错误

c - 在 connect 调用后使用 select

c - for循环中的数组未获得正确的值

CRC 校验 XOR 函数返回值始终为 0

c++ - C++中指向局部变量的指针

指向 char 算术的 C++ 指针