Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.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++ 当指针指向动态分配的内存时,指向指针的指针会被分配什么值?_C++_Dynamic Memory Allocation_Pointer To Pointer_Pointer To Array - Fatal编程技术网

C++ 当指针指向动态分配的内存时,指向指针的指针会被分配什么值?

C++ 当指针指向动态分配的内存时,指向指针的指针会被分配什么值?,c++,dynamic-memory-allocation,pointer-to-pointer,pointer-to-array,C++,Dynamic Memory Allocation,Pointer To Pointer,Pointer To Array,考虑以下情况: int **my_array = new int*[10]; 我们在这里为我的_数组分配什么 my_array是指向什么的指针 有没有办法遍历我的_数组(指针)并设置一个二维整数数组(而不是int*) 我们将数组的地址分配给my_array。该数组包含可以指向其他数组的指针,但还不能指向其他数组 是的,我们可以这样做: int **my_array = new int*[10]; for(int i=0; i<10; ++i) my_array[i] = new i

考虑以下情况:

int **my_array = new int*[10];
  • 我们在这里为我的_数组分配什么
  • my_array
    是指向什么的指针
  • 有没有办法遍历我的_数组(指针)并设置一个二维整数数组(而不是int*)

  • 我们将数组的地址分配给
    my_array
    。该数组包含可以指向其他数组的指针,但还不能指向其他数组

    是的,我们可以这样做:

    int **my_array = new int*[10];
    
    for(int i=0; i<10; ++i)
      my_array[i] = new int[13];
    
    my_array[2][11] = 500;
    
    int**my_array=new int*[10];
    
    对于(int i=0;i我们将数组的地址分配给
    my_array
    。该数组包含可以指向其他数组的指针,但还没有

    是的,我们可以这样做:

    int **my_array = new int*[10];
    
    for(int i=0; i<10; ++i)
      my_array[i] = new int[13];
    
    my_array[2][11] = 500;
    
    int**my_array=new int*[10];
    对于(int i=0;i
    我们在这里为我的数组分配什么

    您可以将
    int*
    分配给
    my\u数组的元素

    my_array[0] = new int[20];
    

    my_array
    是指向什么的指针

    它指向一个由10个
    int*
    对象组成的数组

    是否有任何方法可以遍历my_数组(指针)并设置一个二维整数数组(而不是int*)

    不确定您希望在此处看到什么。
    my_array
    的元素只能是
    int*

    如果希望
    my_array
    成为指向2D数组的指针,可以使用:

    int (*my_array)[20] = new int[10][20];
    
    现在您可以通过
    我的数组[9][19]
    使用
    我的数组[0][0]

    PS如果您试图理解指针和数组,这一切都很好。如果您试图在工作程序中部署此代码,请不要再使用原始数组。请使用或

    对于一维阵列,请使用:

    // A 1D array with 10 elements.
    std::vector<int> arr1(10);
    
    // A 2D array with 10x20 elements.
    std::vector<std::vector<int>> arr2(10, std::vector<int>(20)); 
    
    //包含10个元素的1D数组。
    std::载体arr1(10);
    
    对于二维阵列,请使用:

    // A 1D array with 10 elements.
    std::vector<int> arr1(10);
    
    // A 2D array with 10x20 elements.
    std::vector<std::vector<int>> arr2(10, std::vector<int>(20)); 
    
    //包含10x20个元素的二维数组。
    std::vector arr2(10,std::vector(20));
    
    我们在这里为我的数组分配什么

    您可以将
    int*
    分配给
    my\u数组的元素

    my_array[0] = new int[20];
    

    my_array
    是指向什么的指针

    它指向一个由10个
    int*
    对象组成的数组

    是否有任何方法可以遍历my_数组(指针)并设置一个二维整数数组(而不是int*)

    不确定您希望在此处看到什么。
    my_array
    的元素只能是
    int*

    如果希望
    my_array
    成为指向2D数组的指针,可以使用:

    int (*my_array)[20] = new int[10][20];
    
    现在您可以通过
    我的数组[9][19]
    使用
    我的数组[0][0]

    PS如果您试图理解指针和数组,这一切都很好。如果您试图在工作程序中部署此代码,请不要再使用原始数组。请使用或

    对于一维阵列,请使用:

    // A 1D array with 10 elements.
    std::vector<int> arr1(10);
    
    // A 2D array with 10x20 elements.
    std::vector<std::vector<int>> arr2(10, std::vector<int>(20)); 
    
    //包含10个元素的1D数组。
    std::载体arr1(10);
    
    对于二维阵列,请使用:

    // A 1D array with 10 elements.
    std::vector<int> arr1(10);
    
    // A 2D array with 10x20 elements.
    std::vector<std::vector<int>> arr2(10, std::vector<int>(20)); 
    
    //包含10x20个元素的二维数组。
    std::vector arr2(10,std::vector(20));
    
    如何取消分配所有动态分配的内存?如果
    新[]
    表达式中除第一个以外的任何表达式引发异常(因此在修复前进行向下投票),则此代码会泄漏。若要修复此问题,请改为使用
    std::vector
    。@elyse:注意了,但我不想引发异常处理(没有双关语)对于一个仍在与数组作斗争的初学者来说。当你回答人们的问题时,你应该帮助他们,而不仅仅是让事情变得更糟。这让事情变得更糟。你甚至没有解决这个问题都是懒惰的。你必须解决这个问题,因为你没有重复使用其他人的解决方案。这段代码具有致命的安全性任何人都不应该使用这些问题,尤其是初学者,因为他们永远都不可能很好地解决这些问题。如何释放所有动态分配的内存?如果除了第一个
    new[]
    表达式之外的任何表达式抛出异常,则此代码将泄漏(因此,在修复之前进行向下投票)。若要解决此问题,请改用
    std::vector
    。@elyse:我已抓住要点,但我不想抛出异常处理(没有双关语)对于一个仍在与数组作斗争的初学者来说。当你回答人们的问题时,你应该帮助他们,而不仅仅是让事情变得更糟。这让事情变得更糟。你甚至没有解决这个问题都是懒惰的。你必须解决这个问题,因为你没有重复使用其他人的解决方案。这段代码具有致命的安全性ty问题,任何人都不应该使用它,尤其是初学者,因为他们永远不可能很好地解决这些问题。Removed
    dynamic Array
    tag:tag明确指出,这是关于数据结构的,在这种结构中,可以添加或删除元素,而无需明确的内存分配。感谢编辑:-)Removed
    DynamicArray
    tag:tag明确表示,这是关于可以添加或删除元素而无需显式内存分配的数据结构。感谢编辑:-)我还没有介绍std::vector。谢谢你的回答。我还没有被介绍给std::vector。谢谢你的回答。