C vs vs c 中的指针
Pointers in C vs C++
可能的重复:
为什么C 需要Malloc()的铸件,但C不需要?
此特定的代码在C中运行良好,但在编译为C 程序时会产生编译错误。
#include<stdio.h>
#include<stdlib.h>
int main(){
int (*b)[10];
b = calloc(20, sizeof(int));
return 0;
}
C 汇编中的错误是:
test.cpp: In function ‘int main()’:
test.cpp:9:28: error: invalid conversion from ‘void*’ to ‘int (*)[10]’ [-fpermissive]
任何想法可能是什么原因?
时,在C中,您可以隐式地施放/到void指针到其他指针类型,在C 中不允许使用,并且您需要明确地施放它:
b = (int (*)[10])calloc(20, sizeof(int));
C++
比 C
更严格地检查语言。因此,您需要手动输入它,但在C中是自动分类的。
在这里calloc返回 void*
和 b
是类型int(*)[]
,因此是必需的。
在C 中,还可以牢记其他类型的种姓
<static_cast>
<const_cast>
<reinterpret_cast>
<dynamic_cast>
有关更多信息何时使用static_cast,dynamic_cast,const_cast和reinterpret_cast?
c在铸造时更允许,C 要求您在铸造时明确。您也应该在C版本中施放它。
相关文章:
- std::variant vs指向C++中异构容器基类的指针
- 为什么 VS 无法将右值引用绑定到指针?
- 函数指针的模板参数推导(g++ & ICC vs Clang++ & VC++)
- 此指针 - 按值返回 vs 按引用返回
- C 多重继承和向上的智能指针破坏会导致VS 2017中的堆腐败
- 在使用C (Microsoft vs)中使用指针和新运算符时出错
- Android 原生强指针 vs std::shared_ptr.
- 从多个来源检查NULL:共享_ptr vs double指针
- C vs vs c 中的指针
- 指针指针:std:vector vs. 数组
- Null指针异常(int Vs char)
- 使用 vs typedef 指针到noexcept-function不一致
- C++实例 VS 指针 VS 引用
- C/C++ int[] vs int*(指针与数组表示法).有什么区别
- 传递参数的方式——值vs引用vs指针
- 普通数组vs指针数组
- 如何读取这些表达式:*&指针VS &*指针
- Dladdr:指针到函数vs指针到对象
- 无效地使用不完整类型,引用vs指针
- c#指针vs. c++指针