2

说我有int *a, int *b, int *c并且说a并且b已经指向一些整数。

我想将整数向下添加a并将b它们保存到c指向的任何位置

这个:

*c = *a + *b;

不起作用。它总是吐出“'一元*'的无效参数。为什么会这样?

附加信息:这是我尝试实现它的方式:

int getCoordinates(int argc, char *argv[], FILE *overlay, FILE *base, int *OVx, int *OVy, int *OVendx, int  *OVendy, int *Bx, int *By, int *Bendx, int *Bendy) 
{

     ... // OVx and OVw are assigned here.  I know it works so I won't waste your time with this part.

     // Set overlay image's x and y defaults (0,0).
     *OVx = 0;
     *OVy = 0;
     ...

     OVendx = (*OVx) + (*OVw);
     OVendy = (*OVy) + (*OVh);
4

2 回答 2

2

这是一个工作示例:

#include <stdio.h>

int main( int argc, const char* argv[] )
{
    int x = 1;
    int y = 2;
    int z = 0;
    int *a = &x;
    int *b = &y;
    int *c = &z;

    *c = *a + *b;

    printf( "%d + %d = %d\n", *a, *b, *c );
    return 1;
}

运行产量:

./a.out 
1 + 2 = 3

您可能遇到的常见错误:

  1. 未将 a、b 或 c 指向有效内存。这将导致您的程序崩溃。
  2. 打印指针 (a) 的值,而不是它指向的值 (*a)。这将导致显示非常大的数字。
  3. 不取消引用赋值 c = *a + *b 而不是 *c = *a + *b。在这种情况下,当您在赋值后尝试取消引用 c 时,程序将崩溃。
于 2011-03-08T01:00:18.923 回答
2

如果 Ovendx、Ovendy 指向一个有效的内存位置,那么要将值分配给该位置,您需要取消对它们的引用。所以,应该是——

(*OVendx) = (*OVx) + (*OVw);
(*OVendy) = (*OVy) + (*OVh);

您没有在发布的代码段中取消引用。

于 2011-03-08T01:14:23.697 回答