当前位置:  开发笔记 > 编程语言 > 正文

如何在C中为数组分配数组

如何解决《如何在C中为数组分配数组》经验,为你挑选了1个好方法。

假设我有一个简单的结构,比如这个:

struct myStruct {

   uint8_t arr[10];
};

我想要做的就是修改该数组的内容.但是,似乎我不能直接分配数组(即,我不能做像pointerToThisStruct-> arr = anArrayofSizeTen这样的事情).

所以这是我的主要方法:

int main(int argc, char **argv) {
    uint8_t test[10] = {0};
    myStruct *struc;
    struc->arr = test; //can't do this
    memcpy(struc->arr, test, sizeof(test));
}

现在,我明白直接复制不起作用,但为什么memcpy也给我一个段错误?我究竟应该如何修改struct数组?



1> Chimera..:

你需要声明一个实际的myStruct.不是一个指针.声明指向一个指针实际上并不为结构分配任何内存.

#include 
#include 
#include 

struct myStruct {

   uint8_t arr[10];
};


int main(int argc, char **argv) {

    int i;
    uint8_t test[10] = {0,1,2,3,4,5,6,7,8,9};
    struct myStruct struc;
    memcpy(struc.arr, test, sizeof(struc.arr));


    printf("struc.arr[] = ");

    for( i=0; i < sizeof(test); i++ )
    {
        printf("%d ", struc.arr[i]);
    }

    printf("\n");
    return( 0 );
}


轻微:如果源和目标的大小可能与`memcpy()`有不同的大小,建议使用目标的大小作为_size_:`memcpy(struc.arr,test,sizeof struc.arr) );`(或使用编译时测试来确保两种尺寸匹配)
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有