c - C 中的数组切片

标签 c arrays

在 Python 中,如果我想分配 vector x=(1,2)y=(0,0,0,0) 的前两个元素,我会做类似 y[:1] = x 的事情. C 中是否有等效项来分配 double x[2]={1.,2.}到可用 double y[4] = {0.,0.,0.,0.} 的前两个元素?还是我必须循环?

最佳答案

试试这个

#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;
}

而不是写 sizeof(double)没关系,我做了 sizeof(*x)因为如果我改变 x 的类型我不需要修复 memcpy ,但我还必须更改 y 的类型在这种情况下。

关于c - C 中的数组切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27725222/

相关文章:

C 数组,我的内存会发生什么

c - 当我在 Xcode 中使用命令行工具输入内容时,代码会在我第一次输入时忽略它。为什么会这样,有没有办法避免呢?

c - 初始化指向结构体的指针的元素

c - 生产者消费者信号量线程安全

c - 如何将 C 函数放入某个地址范围

c++ - 如何将 char 数组中的前 15 个字符转换为 C++ 中的 std::string?

c - 使用 argc 和 argv 读取文件

Ruby Twitter 数组问题

c - C中的计数器数组

c++ - C - 通过引用传递数组 - 仅第一个元素集