我试图理解这段代码的作用(以及它是否被允许):
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/