我觉得我对指针有很好的理解,但我想确保我理解正确.

基本上,我正在完成一个虚拟内存的计算机体系 struct 实验室,我们有两个指针.一个指针表示主存,另一个指针表示从mem[0]开始的struts(frame_table)array.

当我初始化程序时,我需要设置&frame_table[0] = &mem[0](我知道&[]是多余的).

我的问题是,当我这样做时,是否需要投出mem的地址?根据我的理解,我会说不.我的 idea 是,我把地址frame_table设置为地址mem,这根本不依赖于类型.下面我有我的例子.

此外,如果有任何类似的情况需要强制转换,或者强制转换会产生未定义的行为,请告诉我.

uint8_t *mem;
fte_t *frame_table;

//do i do this?
frame_table = mem;

//or this?
frame_table = (fte_t*) mem;

推荐答案

在C和C++中,unrelated类型的指针不能隐式地相互转换(但是,在C中,但不是C++中,允许隐式地从void*指针转换到任何其他指针类型).

在本例中,由于fte_tuint8_t是不同的类型,所以需要进行类型转换.

C++相关问答推荐

如何将一个enum类型类型转换为另一个类型?

有什么方法可以检测SunOS上的SparcWorks吗?

try 使用sigqueue函数将指向 struct 体的指针数据传递到信号处理程序,使用siginfo_t struct 体从一个进程传递到另一个进程

了解一些CLIPS原语数据类型

在C语言中使用scanf()时我无法理解的警告

模拟shell并运行.sh文件

将常量转换为指针会增加.数据大小增加1000字节

使用C时,Windows CMD中的argc参数是否包含重定向命令?

C中的指针增量和减量(*--*++p)

在C++中通过空指针隐式访问常量变量的值

在每种If-Else情况下执行语句的最佳方式

==284==错误:AddressSaniizer:堆栈缓冲区下溢

链接到底是如何工作的,我在这里到底做错了什么

类型定义 struct 与简单的类型定义 struct

C-try 将整数和 struct 数组存储到二进制文件中

OMP并行嵌套循环

通过GTK';传递回调参数;s g_signal_connect()导致C中出现意外值

为什么写入关闭管道会返回成功

尽管将其标记为易失性,但 gcc 是否优化了我的等待代码?

GDB 用内容初始化数组