sách gpt4 ăn đã đi

C: Truy cập (int) thông qua chuyển đổi kiểu và dereference Point to (void *) via (void *) Point to (int)

In lại 作者:太空狗 更新时间:2023-10-29 17:25:33 27 4
mua khóa gpt4 giày nike

我正在摆弄 C 中的指针,但仍然不确定一些非常基础的知识。我想出了以下示例代码:

#include 

int main(void)
{
int num = 42; // we want to access this integer
void *vptrB = # // pointer B points to the integer
void *vptrA = &vptrB; // pointer A points to pointer B
printf("%d\n", * (int *) * (void **) vptrA);
trả về 0;
}

内存应该是这样的:

cơ chế

是否有替代方法来访问整数?这个例子有什么不好/不安全的地方吗? * (int *) * (void **) vptrA 是通过 vptrAvptrB truy cập trong một 的唯一方法吗>?

câu trả lời hay nhất

Are there alternatives to access the integer?

 int num = 42;
int *vptrB = #
int **vptrA = &vptrB;
// All print 42
printf("%d\n", num);
printf("%d\n", *vptrB);
printf("%d\n", **vptrA);

Anything bad/unsafe with the example?

sử dụngvoid* 表示数据地址会丢失类型、对齐方式、hằng sốbay hơi 信息。 void* 强制使用转换来随后解释引用的数据——这很容易出错。尽管代码的转换是正确的,但它容易出现维护错误和代码审查误解。

关于C: 通过类型转换和取消引用访问 (int) 通过 (void *) 指向 (void *) 指向 (int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37357320/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress