相关疑难解决方法(0)

296
推荐指数
6
解决办法
38万
查看次数

结构分配或memcpy?

如果我想在另一个(在C中)复制一个结构,那么pro&con's是什么:

struct1 = struct2;
Run Code Online (Sandbox Code Playgroud)

VS

memcpy(&struct1, &struct2, sizeof(mystruct_t));
Run Code Online (Sandbox Code Playgroud)

它们是等价的吗?性能或内存使用有区别吗?

c struct variable-assignment memcpy

38
推荐指数
1
解决办法
7万
查看次数

使用赋值而不是memcpy()在C中复制结构

直到最近,我才看到复制完成的结构字段memcpy().在类和在线指令中,将一个结构的内容复制到另一个结构中通常看起来像

struct block *b0 = malloc(sizeof(struct block));
struct block *b1 = malloc(sizeof(struct block));
/* populate fields in *b0 */
memcpy(b1, b0, sizeof *b1); /* copy contents of b0 into b1 */
/* free b0, b1 */
Run Code Online (Sandbox Code Playgroud)

但是,这个任务也可以通过简单的分配来替换memcpy().

*b1 = *b0; /* dereferenced struct assignment */
Run Code Online (Sandbox Code Playgroud)

有没有充分的理由说明为什么它没有被广泛使用(至少在我有限的经验中)?这两种方法是分配和memcpy()等价的,还是有一些令人信服的理由memcpy()一般使用?

c struct pointers memcpy

21
推荐指数
3
解决办法
3万
查看次数

在C中,为什么我不能在声明后将字符串赋值给char数组?

这一直困扰着我.

struct person {
       char name[15];
       int age;
};
struct person me;
me.name = "nikol";
Run Code Online (Sandbox Code Playgroud)

当我编译时,我收到此错误:

错误:从类型'char*'分配类型'char [15]'时出现不兼容的类型

我错过了一些明显的东西吗?

c arrays string initialization assign

10
推荐指数
2
解决办法
1万
查看次数

复制简单结构时memcpy和'='之间的区别

考虑复制一个不需要特殊复制语义的简单结构.

struct A
{
    char i
    int i;
    long l;
    double b;
    //...maybe more member
}
struct A a;
a.c = 'a'; //skip other member just for illustrate
struct A b;
memset(&a, 0, sizeof(a));
b.c = a.c;
//...for other members, the first way to assign
memcpy(&b, &a, sizeof(b)); //the second way
b = a;    //the third way
Run Code Online (Sandbox Code Playgroud)

3种方法做同样的事情,似乎所有这些方法都是正确的.我曾经使用'memcpy'来复制简单的结构,但现在似乎'='可以做同样的事情.那么使用memcpy和'=' 之间有什么区别吗?

c c++ struct memcpy

2
推荐指数
1
解决办法
759
查看次数