- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不太用C编写代码,但是我目前正在(尝试)将C项目移植到Rust,但我不知道这样做的含义:
void example(const uint8_t *m, unsigned int r)
{
m += r;
}
m = m[r]
相同。但是,如果是这样,
m
和
m[r]
是两种不同的数据类型(对吗??)。尝试在Rust中复制此代码:
fn example(m: &mut [u8], r: u32) {
m = m[r];
}
mismatched types: expected `&mut [u8]`, found `u8
,这是有道理的。我或者把Rust部分弄错了,或者我没有完全理解C部分的作用。有人可以解释我哪里出问题了吗?
最佳答案
给定指向数组中某个元素的m
指针(例如x
)和整数r
,m += r
将m
调整为指向r
之后是x
元素的元素。
例如,如果m
指向a[3]
且r
为5,则m += r
会将m
更改为指向a[8]
。
在m
是uint8_t *
的情况下,它必须指向为字节的元素,并且通过m
元素使r
前进将使指针前进r
字节。在m
指向较大类型的情况下(例如当m
为int *
时),通过m
元素将r
前进会使指针前进r*s
字节,其中s
是每个元素中的字节数。
在许多C实现中,内存中的字节仅从0开始连续编号(尽管并非所有字节都可以映射到虚拟地址空间中),并且用指针所指向的字节数来表示一个指针。在这种情况下,要使指针增加n个字节,C实现只需在其表示中添加n。在具有更复杂的内存模型的C实现中,C实现执行生成指向正确位置的指针所需的任何操作。
关于c - 在uint8_t指针中添加int到底有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61342427/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!