C++ 动态字符串数组-C
我有一个字符串数组,定义如下:C++ 动态字符串数组-C,c++,c,C++,C,我有一个字符串数组,定义如下: char** arrNames; char** AddName(char** arrNames, int nNameCount) { char** arrTemp; arrTemp = new char[nNameCount]; ... // And later I change the pointer of arrNames to arrTemp } 现在我想动态地为它分配一个大小。 我有一个函数,它接收新的大小和上面的数组
char** arrNames;
char** AddName(char** arrNames, int nNameCount)
{
char** arrTemp;
arrTemp = new char[nNameCount];
...
// And later I change the pointer of arrNames to arrTemp
}
现在我想动态地为它分配一个大小。
我有一个函数,它接收新的大小和上面的数组。
事情是这样的:
char** arrNames;
char** AddName(char** arrNames, int nNameCount)
{
char** arrTemp;
arrTemp = new char[nNameCount];
...
// And later I change the pointer of arrNames to arrTemp
}
这显然不起作用。那么我应该怎么做呢
提前感谢。如果您想要nNameCount字符串,您需要分配一个字符数组(即字符串数组):
char**AddName(char**arrNames,int nNameCount)
{
字符**arrTemp=新字符*[nNameCount];
对于(int i=0;i
在此之后,您可以使用arrTemp[index]访问每个字符串。请注意,您仍然需要初始化每个字符串。如果您想要nNameCount字符串,则需要分配一个字符数组(即字符串数组):
char**AddName(char**arrNames,int nNameCount)
{
字符**arrTemp=新字符*[nNameCount];
对于(int i=0;i
在此之后,您可以使用arrTemp[index]访问每个字符串。请注意,您仍然需要初始化每个字符串。下面是一个如何初始化动态字符串的动态数组的工作示例
twoDStr = new char*[10];
twoDStr[0] = new char[10];
cin>>twoDStr[0];
cout<<twoDStr[0]<<endl;
twoDStr=新字符*[10];
twoDStr[0]=新字符[10];
cin>>twoDStr[0];
cout下面是一个如何初始化动态字符串的动态数组的工作示例
twoDStr = new char*[10];
twoDStr[0] = new char[10];
cin>>twoDStr[0];
cout<<twoDStr[0]<<endl;
twoDStr=新字符*[10];
twoDStr[0]=新字符[10];
cin>>twoDStr[0];
在C语言中,动态分配内存的函数有malloc()
,calloc()
,realloc()
和free()
在C语言中,动态分配内存的函数有malloc()
,calloc()
,realloc()
和free()
应该给你更多的信息
//后来我将arrNames的指针改为arrTemp
要使其正常工作,需要将arrNames作为指向数组的指针
char** AddName(char*** arrNames, int nNameCount) {
//...
*arrNames = arrTemp;
}
别忘了释放以前分配的内存,因为它们可能会引用
//后来我将arrNames的指针改为arrTemp
要使其正常工作,需要将arrNames作为指向数组的指针
char** AddName(char*** arrNames, int nNameCount) {
//...
*arrNames = arrTemp;
}
别忘了释放以前分配的内存,因为它们可能会引用你使用C还是C++?新字符。。。将只与C++工作。用C代替Malc。我使用C++编译器(这就是他们教我们的),所以如果你想学习C,就应该工作,不要使用<代码>新< /代码>,即使你碰巧(非常不明智的IMO)使用C++编译器编译你的C代码。如果你想学习C++,那么在现实生活中不要使用<代码>新< /代码>,使用向量。为了理解C++中内存分配的工作原理,可以使用<代码>新< /COD>,但是如果你应该学习C语言中使用的MalOC/FLUE,那么你就不会使用C++新[]/Dele[]来这样做了。你使用C还是C++?新字符。。。将只与C++工作。用C代替Malc。我使用C++编译器(这就是他们教我们的),所以如果你想学习C,就应该工作,不要使用<代码>新< /代码>,即使你碰巧(非常不明智的IMO)使用C++编译器编译你的C代码。如果你想学习C++,那么在现实生活中不要使用<代码>新< /代码>,使用向量。为了理解C++中内存分配的工作原理,可以使用<代码>新< /COD>,但是如果你应该学习C语言中使用的MalOC/FLUE,那么你就不会使用C++新[]/Dele[]来这样做了。Gah,valloc
是一个遗留的Posix组件,而不是标准C。Gah,valloc
是一个遗留的Posix组件,而不是标准C。