我必须为数组写一些文字,但我只有数组的地址,所以我首先创建一个本地数组,用文字填充它,然后将内容复制到目标数组.这是一个例子:
void example(char *array) {
char temp[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
memcpy(array, temp, sizeof(temp));
}
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但我正在寻找一种方法,在一行而不是两行内做同样的事情.有谁知道如何做到这一点?
我写这个答案是因为你评论说你想在一行中做这个,以避免" 访问许多指针 ".但你不会.任何体面的编译器都会优化它.GCC 为您的示例-O1生成此代码x86_64,不变.它甚至没有打电话memcpy:
example:
.LFB12:
.cfi_startproc
movb $1, (%rdi)
movb $2, 1(%rdi)
movb $3, 2(%rdi)
movb $4, 3(%rdi)
movb $5, 4(%rdi)
movb $6, 5(%rdi)
movb $7, 6(%rdi)
movb $8, 7(%rdi)
ret
.cfi_endproc
Run Code Online (Sandbox Code Playgroud)
为了解释:$1,$2等是你的文字的元素,并且%rdi是包含第一个参数寄存器example即你命名的指针array.
只需使用两条可读行.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |