Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过int变量设置char[]的大小_C++_Arrays_Char - Fatal编程技术网

C++ 通过int变量设置char[]的大小

C++ 通过int变量设置char[]的大小,c++,arrays,char,C++,Arrays,Char,关于如何使用数据类型int的变量设置数组大小,我做了很多研究,但没有找到任何有用的方法 这里有一个我尝试过的例子,它给了我一个错误,说表达式必须有一个常量值 对不起,如果这个问题很愚蠢,我对c还是很陌生的++ 任何帮助都将不胜感激 您必须使用动态分配 int size = 1337; char *str = new char[size]; 通过这样做,程序将在运行时在堆上分配内存 您不能执行char str[size],因为编译时不知道大小,编译器也不知道必须在堆栈上分配多少空间 当然,请记住

关于如何使用数据类型int的变量设置数组大小,我做了很多研究,但没有找到任何有用的方法

这里有一个我尝试过的例子,它给了我一个错误,说表达式必须有一个常量值

对不起,如果这个问题很愚蠢,我对c还是很陌生的++


任何帮助都将不胜感激

您必须使用动态分配

int size = 1337;
char *str = new char[size];
通过这样做,程序将在运行时在堆上分配内存

您不能执行char str[size],因为编译时不知道大小,编译器也不知道必须在堆栈上分配多少空间


当然,请记住在使用后删除[]str。

您必须使用动态分配

int size = 1337;
char *str = new char[size];
通过这样做,程序将在运行时在堆上分配内存

您不能执行char str[size],因为编译时不知道大小,编译器也不知道必须在堆栈上分配多少空间

当然记得在使用[]str之后删除它。

sze在编译时是未知的;C++不支持可变长度数组,所以字符STR [SZE];不是有效的C++。 一种解决方法是使用char*str=new char[sze];但这可能会给您带来问题,因为您必须用后续的delete[]str来平衡这一点;否则你会泄漏内存

如果可以的话,最好使用内置的字符串类std::string。

sze在编译时是未知的;C++不支持可变长度数组,所以字符STR [SZE];不是有效的C++。 一种解决方法是使用char*str=new char[sze];但这可能会给您带来问题,因为您必须用后续的delete[]str来平衡这一点;否则你会泄漏内存


<> P>使用内置的字符串类STD::String,最好是。

最好的选择是使用STD:String而不是字符数组。如果你是C++的新手,你就不应该使用指针。指针是一种低级的专家工具,主要用于优化实现和低级操作,而不必仅仅是让一些工作。在标准C++中,你不能这么做,但是一些C++编译器有扩展,让你做。考虑到我们有C++标准容器,它不是一个非常有趣的特性。@ KeRekSB,我没有在Windows上编写我的C++程序,或者类似的东西,String。h是不可用的。一个很好的选择的重复可能是使用STD:String而不是字符数组。如果你是C++的新手,你就不应该使用指针。指针是一种低级的专家工具,主要用于优化实现和低级操作,而不必仅仅是让一些工作。在标准C++中,你不能这么做,但是一些C++编译器有扩展,让你做。考虑到我们有C++标准容器,它不是一个非常有趣的特性。@ KeRekSB,我没有在Windows上编写我的C++程序,或者类似的东西,String。h是不可用的。可能的副本