C 如何使用带指针的乘法运算符?

C 如何使用带指针的乘法运算符?,c,pointers,C,Pointers,所以我对c语言编程比较陌生,事实上我只是把这门课作为主修课的先决条件。所以指针对我来说是一个相当陌生的概念。对于这个特定的赋值,我们不允许使用任何引用变量,必须使用内存分配(malloc)来存储值。但是,对于其中一个部分,它要求打印3个数字的乘积的结果(所有数字都由指针而不是参考变量分配给地址),我的问题是,如何仅使用指针来指向值的地址进行乘法或真正的算术运算。我想强调的是,我不想将地址本身相乘,因为我不确定这是否对我有帮助。再次我对这一切都很陌生,所以任何帮助都将不胜感激 int main()

所以我对c语言编程比较陌生,事实上我只是把这门课作为主修课的先决条件。所以指针对我来说是一个相当陌生的概念。对于这个特定的赋值,我们不允许使用任何引用变量,必须使用内存分配(malloc)来存储值。但是,对于其中一个部分,它要求打印3个数字的乘积的结果(所有数字都由指针而不是参考变量分配给地址),我的问题是,如何仅使用指针来指向值的地址进行乘法或真正的算术运算。我想强调的是,我不想将地址本身相乘,因为我不确定这是否对我有帮助。再次我对这一切都很陌生,所以任何帮助都将不胜感激

int main()
{
    int *a , *b, *c, *product;   
    product = malloc(sizeof(float));
    a = malloc(sizeof(int));
    b = malloc(sizeof(int));
    c = malloc(sizeof(int));
    *a = 1;
    *b = 2;
    *c = 3;
    *product = //this is where id assume itd go
} 

作业中特别提到不要使用参考变量,所以我不能完全确定他希望我们怎么做。谢谢。

这和普通乘法差不多

*product = (*a)*(*b)*(*c) //should do.
  • 当您使用malloc时,不要忘记使用stdlib.h文件,否则您将收到警告,这将是低效的

  • 不要像这样使用(*int)强制转换,因为malloc返回*void并导致数据损坏


printf(“%d”,(*a)*(*b)*(*c))。“打印产品。”字面意思。指针是一个变量。顺便说一句,它有一个名称。明白了,谢谢,不知道为什么我不想使用括号。另外,感谢您澄清它是一个变量,这可能帮我在测试lol上省了一分。这个问题的问题是,除了“如何使用乘法运算符和指针”之外,它本质上只问“这个问题要求什么”。您不需要任何括号。你甚至可以把它写成
*a**b**c
,但这并不是说它的风格很好,而且效率也很低--?在什么和怎样做方面效率低下?这会导致数据损坏--将
void*
转换为
int*
会导致数据损坏吗?怎么做?@AjayBrahmakshatriya如果我错了,不要烧死我。malloc包含在stdlib.h头文件中,如果我们不将其包含在程序中,它会发出警告,比如警告:内置函数“malloc”的不兼容隐式声明,尽管这只是一个警告,他成功编译了这个程序,但它隐藏了一个事实,即他错过了头文件,这可能会在后期影响程序,所以我觉得是这样的效率低下。如果我错了,对不起。是的,关于警告,你是100%正确的。但这不会导致任何低效率。是的,OP应该包括
stdlib.h
。在malloc之后不需要对
(int*)
进行强制转换也是正确的,但这不会导致任何数据损坏。您的建议没有错,只是您给出的理由不准确。