假设我有一个简单的结构,比如这个:
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数组?
你需要声明一个实际的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 ); }