gpt4 book ai didi

C 标度整数

转载 作者:行者123 更新时间:2023-11-30 16:19:41 25 4
gpt4 key购买 nike

所以我读到,在 C 中,不建议对指针添加或减去缩放整数,因为它不安全。可以执行任意代码,因为指针可能超出地址范围。有人可以详细解释一下缩放整数是什么,它的用途是什么?我没有找到任何可靠的来源,所以也许你们中的某个人可以帮助我。

来源网址:https://wiki.sei.cmu.edu/confluence/plugins/servlet/mobile?contentId=87152330#content/view/87152330

非常感谢。

最佳答案

部分问题在于来源似乎交替使用术语“缩放”和“转换”。

它们在某种意义上所指的缩放是仅在指针算术上下文中执行的缩放。例如:

int buffer[5];
int *pi = buffer;
pi += 2;

pi 最初指向的地址是单个字节或char。但当加上2时,地址就会前移8或16字节,具体取决于系统是32位系统还是64位系统。这是因为 int 的大小为 4 或 8 字节。因此,所使用的实际值被认为是按比例缩放的。

在源代码中使用术语“缩放”的另一个含义是,例如,它指的是“按 int 缩放”,然后再次缩放的 size_t 值。

这很令人困惑,因为它的真正含义是将 size_t 值转换为 int (用于合法的指针算术),然后在该上下文中进行缩放算术。

对于指针算术来说,这成为一个问题,当然是转换是否丢失信息。

关于指针算术要记住的主要事情是始终确保您认为正在使用的值实际上是您实际使用的值。

关于C 标度整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55562665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com