使用指向文字的指针访问指针

Lui*_*Lui 2 c arrays literals

我必须为数组写一些文字,但我只有数组的地址,所以我首先创建一个本地数组,用文字填充它,然后将内容复制到目标数组.这是一个例子:

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)

这工作得很好,但我正在寻找一种方法,在一行而不是两行内做同样的事情.有谁知道如何做到这一点?

Arj*_*kar 5

我写这个答案是因为你评论说你想在一行中做这个,以避免" 访问许多指针 ".但你不会.任何体面的编译器都会优化它.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.

只需使用两条可读行.