C 如何使用带指针的乘法运算符?
所以我对c语言编程比较陌生,事实上我只是把这门课作为主修课的先决条件。所以指针对我来说是一个相当陌生的概念。对于这个特定的赋值,我们不允许使用任何引用变量,必须使用内存分配(malloc)来存储值。但是,对于其中一个部分,它要求打印3个数字的乘积的结果(所有数字都由指针而不是参考变量分配给地址),我的问题是,如何仅使用指针来指向值的地址进行乘法或真正的算术运算。我想强调的是,我不想将地址本身相乘,因为我不确定这是否对我有帮助。再次我对这一切都很陌生,所以任何帮助都将不胜感激C 如何使用带指针的乘法运算符?,c,pointers,C,Pointers,所以我对c语言编程比较陌生,事实上我只是把这门课作为主修课的先决条件。所以指针对我来说是一个相当陌生的概念。对于这个特定的赋值,我们不允许使用任何引用变量,必须使用内存分配(malloc)来存储值。但是,对于其中一个部分,它要求打印3个数字的乘积的结果(所有数字都由指针而不是参考变量分配给地址),我的问题是,如何仅使用指针来指向值的地址进行乘法或真正的算术运算。我想强调的是,我不想将地址本身相乘,因为我不确定这是否对我有帮助。再次我对这一切都很陌生,所以任何帮助都将不胜感激 int main()
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并导致数据损坏
*a**b**c
,但这并不是说它的风格很好,而且效率也很低--?在什么和怎样做方面效率低下?这会导致数据损坏--将void*
转换为int*
会导致数据损坏吗?怎么做?@AjayBrahmakshatriya如果我错了,不要烧死我。malloc包含在stdlib.h头文件中,如果我们不将其包含在程序中,它会发出警告,比如警告:内置函数“malloc”的不兼容隐式声明,尽管这只是一个警告,他成功编译了这个程序,但它隐藏了一个事实,即他错过了头文件,这可能会在后期影响程序,所以我觉得是这样的效率低下。如果我错了,对不起。是的,关于警告,你是100%正确的。但这不会导致任何低效率。是的,OP应该包括stdlib.h
。在malloc之后不需要对(int*)
进行强制转换也是正确的,但这不会导致任何数据损坏。您的建议没有错,只是您给出的理由不准确。