2016-01-13 76 views
-1

此代码显示此错误Invalid operands to binary expression ('int*' and 'int*')目标C乘2 INT *

int *a = 5; 
    int *b = 3; 
    int *c = a*b; 

我怎样才能将它们相乘,而为什么这是一个错误?

+3

int a;删除星号符号,因为int是原始数据类型而不是对象。 –

回答

2

您正在使用int值初始化int*。乘值,并将其写入到另一个指针,你应该调用存储在地址的值与(*a)

这里是你想要做什么的示例代码:

int *a = malloc(sizeof(int)); 
int *b = malloc(sizeof(int)); 
int *c = malloc(sizeof(int)); 
*a = 2; 
*b = 3; 
*c = (*a)*(*b); 
printf("%d %d %d", *a,*b,*c); 
free(a); 
free(b); 
free(c); 

它打印2 3 6如预期。

2

请删除asterisk符号,因为int是原始数据类型不是对象。您可以将asterisk符号与对象不是原始数据类型。

星号符号是来自C语言的指针符号。

int a = 5; 
    int b = 3; 
    int c = a*b; 
+0

我会喜欢,但在我使用的代码中我不能更改int的声明 – D4rWiNS

+0

您必须删除星号符号,否则您将收到编译时错误。 –

1

这是C(原始类型)整数类型,所以你不能用指针声明。

请找到以下码:

INT一个= 5;

int b = 3;

int c =(a * b);

感谢