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

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也会给我一个segfault呢我应该如何修改struct数组?

最佳答案

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

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

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

关于c - 如何在C中将数组分配给结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34188576/

10-10 09:23
查看更多