C 风格编码和动态数组

标签 c arrays dynamic-memory-allocation

这个问题是关于malloc在 C 中与结构或数组相关。我注意到有两种分配内存的方法,但我无法区分它们之间的区别。

char* arr = (char*) malloc(capacity * sizeof(char));

对比

char* arr =  malloc(capacity * sizeof(char));

额外的(char*)有什么用? ?如果没有它,代码可以正常编译并执行相同的结果。

最佳答案

在 C++ 中,您需要进行 (char*) 强制转换,但在为 C 编译时,void* 将自由转换为任何其他指针类型。

如果代码可能在两种语言之间共享,那么进行强制转换不需要任何成本。

关于C 风格编码和动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58720126/

相关文章:

C : Write multiple arrays with one function.

c - "printf"在任何 INT 10h 中断调用后无法正常工作

javascript - 将多维对象数组转换为单维对象数组 Javascript

c++ - 将基类指针转换为子类指针 - C++

c++ - 如何释放动态分配的类?

代码片段警告 : cast to pointer from integer of different size

c++ - 动态类型取消引用?

c# - 在字符串数组中对字符串值进行子串化?

java - 仍然有 NullPointerException 错误

c++ - Linux 真的分配了它不应该在 C++ 代码中的内存