2011-09-29 135 views
0

我有一个方法签名:如何取一个值,在指针和复制到另一个指针

void word_not(lc3_word_t *R, lc3_word_t *A) 

我需要的* A的内容,并将它们复制到* R。

我该怎么做?

我试过转让

* R = * A;但我的编译器抱怨。

任何想法?

+1

编译器如何“抱怨”? (错误信息是什么?) – Mysticial

+0

gcc -g -Wall -std = c99 -c logic.c logic.c:在函数'word_not'中: logic.c:18:错误:赋值中的不兼容类型 make:* ** [logic.o]错误1 –

+0

呃......它们是完全相同的类型?这是给你的吗? – Mysticial

回答

3
memcpy(R, A, sizeof(lc3_word_t)); 

memcpy拷贝的特定数目从A到R.字节这假设这个有意义的类型的lc3_word_t在于R指向分配的空间的结构。

+0

你错过了一个封闭的paren。 –

0

是的,就像大卫说的那样,memcpy应该有所帮助。

但确保内存分配给R,否则最终会损坏其他一些变量的内存。如果您计划分配此函数内部存储器(我宁愿这样),那么更改签名如下

void word_not(lc3_word_t **pR, lc3_word_t *A) 
{ 
    *pR = (lc3_word_t*)malloc(sizeof(lc3_word_t)); 
    if(*pR != 0) 
    { 
      memcpy(*pR, A, sizeof(lc3_word_t)); 
    } 
}