C 中的数组切片

con*_*res 6 c arrays

在 Python 中,如果我想将向量分配x=(1,2)给 的前两个元素y=(0,0,0,0),我会做类似y[:1] = x. C 中是否有等效项可以将 a 分配给double x[2]={1.,2.}available 的前两个元素double y[4] = {0.,0.,0.,0.}?还是我必须循环?

Iha*_*imi 6

试试这个

#include <string.h>
#include <stdio.h>

int main()
{
    double x[2] = {1., 2.};
    double y[4] = {0., 0., 0., 0.};

    memcpy(y, x, 2 * sizeof(*x));
              /* ^ 2 elements of size -> sizeof(double) */

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

而不是写sizeof(double)哪个没问题,我这样做sizeof(*x)是因为如果我改变了类型,x我就不需要修复memcpy,但y在这种情况下我也必须改变类型。

  • @conjectures 你可以用`y+1`从`y[1]`的地址开始写 (2认同)