指针数组和函数 CPP
Pointer Arrays and Functions CPP
我想知道是否有办法分配一个动态数组(C 风格),就像在非动态数组的情况下(而不是 matrix[0][0] = ...
)的值,例如:
int n = 3;
int ** matrix = new int*[n];
for(int i = 0; i < n; ++i){
matrix[i] = new int[n];
}
matrix = {{1,1,1},{2,0,2},{3,3,3}};
我如何将非动态数组 int matrix[3][3] = {{1,1,1},{2,0,2},{3,3,3}};
传递给像 void printmatrix(int **matrix, int n)
这样的函数?
谢谢!!
I wonder If there's a way to assign a dynamic array (in c), values like in the case of a non dynamic array (instead of matrix[0][0] = ...
)
对于二维数组,仅在声明时,例如:
int matrix[][3] = {{1,1,1},{2,0,2},{3,3,3}};
或
int matrix[][3]{{1, 1, 1}, {2, 0, 2}, {3, 3, 3}};
允许对数组进行值初始化。
之后你不能,matrix
不是可修改的左值,你不能以这种方式直接赋值。
稍后添加值是 exactly the same in both situations,使用 matrix[0][0] = ...
,这对二维数组和指向指针分配的指针都有效,它是我可能添加的指针解引用符号的一个很好的替代品。
And how would I pass the non dynamic array int matrix[3][3] = {{1,1,1},{2,0,2},{3,3,3}};
to a function like void printmatrix(int **matrix, int n)
?
做不到,一个是指向int
的指针,另一个是int
的数组数组,又名 int
的二维数组,它们是不兼容的,你不能将其中任何一个传递给另一个的参数。
最多可以传递一个指针数组,即 int* matrix[SIZE]
可以传递给int **matrix
类型的参数,这是因为当作为参数传递时,数组将衰减为指针。
如前所述,这种赋值在 C++ 中是不可能的。矩阵的每个元素只是指向 int 类型元素的指针。
这张图片显示了当你动态分配时你想做什么 matrix.Dynamic 当你必须在运行时给矩阵字段赋值时使用分配,例如你从用户那里获取数据 std::cin 然后用该数据动态填充矩阵。
我想知道是否有办法分配一个动态数组(C 风格),就像在非动态数组的情况下(而不是 matrix[0][0] = ...
)的值,例如:
int n = 3;
int ** matrix = new int*[n];
for(int i = 0; i < n; ++i){
matrix[i] = new int[n];
}
matrix = {{1,1,1},{2,0,2},{3,3,3}};
我如何将非动态数组 int matrix[3][3] = {{1,1,1},{2,0,2},{3,3,3}};
传递给像 void printmatrix(int **matrix, int n)
这样的函数?
谢谢!!
I wonder If there's a way to assign a dynamic array (in c), values like in the case of a non dynamic array (instead of
matrix[0][0] = ...
)
对于二维数组,仅在声明时,例如:
int matrix[][3] = {{1,1,1},{2,0,2},{3,3,3}};
或
int matrix[][3]{{1, 1, 1}, {2, 0, 2}, {3, 3, 3}};
允许对数组进行值初始化。
之后你不能,matrix
不是可修改的左值,你不能以这种方式直接赋值。
稍后添加值是 exactly the same in both situations,使用 matrix[0][0] = ...
,这对二维数组和指向指针分配的指针都有效,它是我可能添加的指针解引用符号的一个很好的替代品。
And how would I pass the non dynamic array
int matrix[3][3] = {{1,1,1},{2,0,2},{3,3,3}};
to a function like voidprintmatrix(int **matrix, int n)
?
做不到,一个是指向int
的指针,另一个是int
的数组数组,又名 int
的二维数组,它们是不兼容的,你不能将其中任何一个传递给另一个的参数。
最多可以传递一个指针数组,即 int* matrix[SIZE]
可以传递给int **matrix
类型的参数,这是因为当作为参数传递时,数组将衰减为指针。
如前所述,这种赋值在 C++ 中是不可能的。矩阵的每个元素只是指向 int 类型元素的指针。
这张图片显示了当你动态分配时你想做什么 matrix.Dynamic 当你必须在运行时给矩阵字段赋值时使用分配,例如你从用户那里获取数据 std::cin 然后用该数据动态填充矩阵。