繁体   English   中英

在结构中设置数组数据

Setting array data in a struct

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

如果在传递给函数时我们将参数uint32_t data[]uint32_t* data都视为指向数据数组的指针,为什么在设置结构成员时情况并非如此? 快速示例:

#include <stdint.h> /* uint32_t */
#include <string.h> /* memcpy */
#include <stdlib.h> /* malloc */

typedef struct {
    uint32_t data[1024];
} tData;

typedef struct {
    uint32_t *data;
} pData;

int main()
{
    // structs
    pData pdata;
    tData sdata;
    
    // Test 1.
    ///////////////////////////////////
    uint32_t mydata[1024];
    
    // This is OK
    pdata.data = mydata;
    
    // This is not OK
    sdata.data = mydata;
    
    // But this is OK
    memcpy(sdata.data, mydata, 1024);
    
    // Test 2.
    ///////////////////////////////////
    uint32_t *otherdata = malloc(sizeof(uint32_t)*1024);
    
    // This is OK
    pdata.data = otherdata;
    
    // This is not OK
    sdata.data = otherdata;
    
    // But this is OK
    memcpy(sdata.data, otherdata, 1024);
}

为了满足 struct tData我必须做一个memcpy吗? 这是唯一的方法吗?

1 个回复

看起来像试图直接分配一个数组,像这样(没有结构)

int A[10];
int B[10];
int  *ptr;
ptr = A;    // OK
A = B;      // Not ok

将数组分配给指针将使指针指向数组的第一个元素,而不允许直接比较 2 个数组。

以 memcpy 为例,就等于将元素(它们的内存)一个一个地复制。 所以你也可以做这样的事情。

for(int i = 0; i < 1024; ++i)
    sdata.data[i] = mydata[i];
1 在结构中设置数组

我试图在Java的Renderscript中设置一个自定义结构内的数组。 这是我的结构: 这是我尝试设置数组“ audioData”的方法 这是抛出的异常: 我只创建了一个大小为1的ScriptField_WorldState。根据我对set_audioData方法 ...

2 结构中数组的设置值

我想给结构中的向量/数组赋值。 像下面这样。 但是,以下代码会产生错误,并且无法编译。 如何用我想填充的值填充v ,并将v保存在结构中? 谢谢。 ...

3 设置对象数据结构数组属性

经过详尽的搜索,我还没有找到一个明确的答案来解决我的问题。 这可能部分是由于对javascript术语的不正确或不精确的引用,因为面向对象的编程对我来说是新的。 我希望从上面可以看出,有足够的信息来确定我的最终编程目标。 最初我试过: 这部分工作,除了.value已成为一 ...

6 用数组中的数据填充结构

我有一个数组,其原始数据的大小为64 bytes 我用内存中的实际数据填充此数组。 而且我有一个结构(该结构的大小为64 bytes ) 我需要使用数组中的数据更新此结构中的值: 并且功能错误。 而且我不知道为什么。 这是填充结构的完整功能: 当 ...

7 访问结构数组中的数据

我不明白我必须如何使用指向结构的指针。 我正在尝试一个非常简单的示例,但是没有用。 为什么我的程序崩溃? 我应该如何将int值放入结构中? ...

8 如何使用结构数组中的数据

我想使用结构数组中的纬度和经度值表示折线。 您可以在视图中使用json中的list [1] .latitude值,但是,如果尝试使用上述重写func viewDidLoad()中的list [1] .latitude值,则会出现错误。 如何将此值用作折线的纬度和经度值? 迅捷来源 ...

2017-01-24 13:58:41 0 26   ios/ ipad
9 在LabVIEW中设置和读取.NET结构数组

我有一个包含浮点数和整数的.NET结构,并且我有一个返回该结构数组的方法。 如何在LabVIEW中初始化对.NET结构数组的引用,以便可以读出浮点数和整数? ...

2013-10-21 09:26:43 1 486   labview
10 在结构数组中设置多行错误

我想用C ++创建一个模块系统。 以下是我的程序,没有任何问题。 我的问题是我想在不使用模块的情况下将模块信息发送到Load_All_Fu​​nctions 我想要这样的东西: (拆分每个设置的过程)。 但是当我尝试运行此命令时,我看到此错误'Loads': rede ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM