C++ C++;Ints初始化数组的指针

C++ C++;Ints初始化数组的指针,c++,arrays,initialization,fill,C++,Arrays,Initialization,Fill,我想让一个数组可以被一个类的所有函数访问 我将数组作为私有变量放在头文件中 private: int* arrayName; 在实现该类的.cpp文件中,构造函数接受int值(size)并创建数组。目标是填满它 ClassName::ClassName(int numElements){ arrayName = new int[numElements]; //make arrays the size of numElements for(int i = 0; i<

我想让一个数组可以被一个类的所有函数访问

我将数组作为私有变量放在头文件中

    private:
    int* arrayName;
在实现该类的.cpp文件中,构造函数接受int值(size)并创建数组。目标是填满它

ClassName::ClassName(int numElements){
  arrayName = new int[numElements]; //make arrays the size of numElements
  for(int i = 0; i<numElements; i++)
      arrayName[i] = 0;
}
ClassName::ClassName(整数){
arrayName=new int[numElements];//使数组的大小为numElements

对于(int i=0;i您可以使用
memset
功能:

memset(arrayName,0,sizeof(int)*numElements);
void*memset(void*ptr,int-value,size_t num);
函数将
ptr
指向的内存块的第一个num字节设置为指定值(解释为无符号字符)

要使用它,必须包含
string.h
头文件


有关详细信息:

您可以使用
memset
功能:

memset(arrayName,0,sizeof(int)*numElements);
void*memset(void*ptr,int-value,size_t num);
函数将
ptr
指向的内存块的第一个num字节设置为指定值(解释为无符号字符)

要使用它,必须包含
string.h
头文件


有关详细信息:

如果要对新数组进行零初始化,只需对其进行值初始化。这具有零初始化其元素的效果:

arrayName = new int[numElements]();
//                              ^^
但是您确实希望使用
std::vector


通过这种方式,您不必担心删除数组和实现复制构造函数和赋值运算符。

如果要对新数组进行零初始化,只需对其进行值初始化。这具有零初始化其元素的效果:

arrayName = new int[numElements]();
//                              ^^
但是您确实希望使用
std::vector


这样,您就不必担心删除数组和实现复制构造函数和赋值运算符。

您要做的是根据需要逐步扩展数组

 arrayName = new int[numElements];
 for(int i = 0; i<numElements; i++)
       arrayName[i] = 0;
arrayName=newint[numElements];

对于(int i=0;i您要做的是根据需要逐步扩展阵列

 arrayName = new int[numElements];
 for(int i = 0; i<numElements; i++)
       arrayName[i] = 0;
arrayName=newint[numElements];

对于(int i=0;i你的私有变量只是一个指针。不是一个数组,不是指向数组的指针。有些东西必须将内存归零;无论是你还是库函数。没有迭代就无法神奇地将内存归零。你的私有变量只是一个指针。不是数组,不是指向数组的指针。有些东西必须将内存归零;这是什么呃,这是你或者一个库函数。如果不迭代它,就无法神奇地将内存归零。