C++ C++;:数组和sizeof
给出的说明:编写一个函数int getLength(int grid[][6]),用于计算二维数组中包含的元素数 我的第一个问题是:如何将数组传递给函数?当我尝试这样做时,我会出错C++ C++;:数组和sizeof,c++,arrays,sizeof,C++,Arrays,Sizeof,给出的说明:编写一个函数int getLength(int grid[][6]),用于计算二维数组中包含的元素数 我的第一个问题是:如何将数组传递给函数?当我尝试这样做时,我会出错 int x[][2] = {{ 1, 2 }, { 2, 3 }}; int getLength(x); 错误:“int(*)[2]”类型的值不能用于初始化“int”类型的实体 ============================================================
int x[][2] = {{ 1, 2 }, { 2, 3 }};
int getLength(x);
错误:“int(*)[2]”类型的值不能用于初始化“int”类型的实体
============================================================
另外,这是否和像这样使用sizeof()一样简单
int getLength(int grid[][6]){
cout << sizeof(grid);
return sizeof(grid);
}
intgetLength(intgrid[][6]){
cout如果将二维数组传递给函数getLength()
as
int x[][2];
getLength(x);
函数声明应为:
getLength(int x[][2]) { .. }
在上面的声明中,不需要指定行数,因为我们没有为数组分配内存,因此可以忽略。数组的维度需要列数
二维阵列的大小可以计算为:
ROW * COL * sizeof x[0][0]
如果将二维数组传递给函数getLength()
as
int x[][2];
getLength(x);
函数声明应为:
getLength(int x[][2]) { .. }
在上面的声明中,不需要指定行数,因为我们没有为数组分配内存,因此可以忽略。数组的维度需要列数
二维阵列的大小可以计算为:
ROW * COL * sizeof x[0][0]
如果将二维数组传递给函数getLength()
as
int x[][2];
getLength(x);
函数声明应为:
getLength(int x[][2]) { .. }
在上面的声明中,不需要指定行数,因为我们没有为数组分配内存,因此可以忽略。数组的维度需要列数
二维阵列的大小可以计算为:
ROW * COL * sizeof x[0][0]
如果将二维数组传递给函数getLength()
as
int x[][2];
getLength(x);
函数声明应为:
getLength(int x[][2]) { .. }
在上面的声明中,不需要指定行数,因为我们没有为数组分配内存,因此可以忽略。数组的维度需要列数
二维阵列的大小可以计算为:
ROW * COL * sizeof x[0][0]
这是不可能的。当数组被传递给函数时,它会衰减为指针,无法检索数组大小
可以使用模板从数组类型中提取大小:
template <size_t N, size_t M>
size_t getLength(int (&)[N][M]) {return N*M;}
模板
size_t getLength(int(&)[N][M]){return N*M;}
通过引用传递数组,它将保留其类型,从中可以自动推断模板参数以给出返回值。这是不可能的。当数组传递给函数时,它将衰减为指针,无法检索数组大小
#include <iostream>
using namespace std;
int getLength(int x[][2]);
void main(){
int x[][2] = { { 1, 2 }, { 2, 3 } };
int y = getLength(x);
cout << y << endl;
}
int getLength(int x[][2]){
cout << sizeof(x) << endl;
for (int i = 0; i < 2; i++){
for (int j = 0; j < 2; j++)
cout << x[i][j]<<" ";
cout << endl;
}
return sizeof(x);
}
可以使用模板从数组类型中提取大小:
template <size_t N, size_t M>
size_t getLength(int (&)[N][M]) {return N*M;}
模板
size_t getLength(int(&)[N][M]){return N*M;}
通过引用传递数组,它将保留其类型,从中可以自动推断模板参数以给出返回值。这是不可能的。当数组传递给函数时,它将衰减为指针,无法检索数组大小
#include <iostream>
using namespace std;
int getLength(int x[][2]);
void main(){
int x[][2] = { { 1, 2 }, { 2, 3 } };
int y = getLength(x);
cout << y << endl;
}
int getLength(int x[][2]){
cout << sizeof(x) << endl;
for (int i = 0; i < 2; i++){
for (int j = 0; j < 2; j++)
cout << x[i][j]<<" ";
cout << endl;
}
return sizeof(x);
}
可以使用模板从数组类型中提取大小:
template <size_t N, size_t M>
size_t getLength(int (&)[N][M]) {return N*M;}
模板
size_t getLength(int(&)[N][M]){return N*M;}
通过引用传递数组,它将保留其类型,从中可以自动推断模板参数以给出返回值。这是不可能的。当数组传递给函数时,它将衰减为指针,无法检索数组大小
#include <iostream>
using namespace std;
int getLength(int x[][2]);
void main(){
int x[][2] = { { 1, 2 }, { 2, 3 } };
int y = getLength(x);
cout << y << endl;
}
int getLength(int x[][2]){
cout << sizeof(x) << endl;
for (int i = 0; i < 2; i++){
for (int j = 0; j < 2; j++)
cout << x[i][j]<<" ";
cout << endl;
}
return sizeof(x);
}
可以使用模板从数组类型中提取大小:
template <size_t N, size_t M>
size_t getLength(int (&)[N][M]) {return N*M;}
模板
size_t getLength(int(&)[N][M]){return N*M;}
通过引用传递数组,它将保留其类型,从中可以自动推断模板参数以给出返回值。\include
#include <iostream>
using namespace std;
int getLength(int x[][2]);
void main(){
int x[][2] = { { 1, 2 }, { 2, 3 } };
int y = getLength(x);
cout << y << endl;
}
int getLength(int x[][2]){
cout << sizeof(x) << endl;
for (int i = 0; i < 2; i++){
for (int j = 0; j < 2; j++)
cout << x[i][j]<<" ";
cout << endl;
}
return sizeof(x);
}
使用名称空间std;
intgetLength(intx[][2]);
void main(){
int x[][2]={{1,2},{2,3};
int y=getLength(x);
不能包含
使用名称空间std;
intgetLength(intx[][2]);
void main(){
int x[][2]={{1,2},{2,3};
int y=getLength(x);
不能包含
使用名称空间std;
intgetLength(intx[][2]);
void main(){
int x[][2]={{1,2},{2,3};
int y=getLength(x);
不能包含
使用名称空间std;
intgetLength(intx[][2]);
void main(){
int x[][2]={{1,2},{2,3};
int y=getLength(x);
cout如果您的任务是向函数发送任意大小的2D数组,则只需发送指针和两个大小。但如果您希望通过此类函数测量大小,请小心sizeof(grid);
将计算指针4或8的大小(即32或64位,具体取决于您的系统)但不是数组的大小。如果您的任务是将任意大小的2D数组发送给函数,则只发送指针和两个大小。但如果您希望通过此类函数测量大小,请小心sizeof(grid);
将计算指针4或8的大小(即32或64位,具体取决于您的系统)但不是数组的大小。如果您的任务是将任意大小的2D数组发送给函数,则只发送指针和两个大小。但如果您希望通过此类函数测量大小,请小心sizeof(grid);
将计算指针4或8的大小(即32或64位,具体取决于您的系统)但不是数组的大小。如果您的任务是将任意大小的2D数组发送给函数,则只发送指针和两个大小。但如果您希望通过此类函数测量大小,请小心sizeof(grid);
将计算指针4或8的大小(即32或64位,具体取决于您的系统)但不是数组的大小。sizeof
不起作用,因为数组不能按值传递(函数接收指针和值)。您必须实际将长度作为另一个参数传递给函数。“给定的方向”这是不可能的,除非有进一步的信息表明数组的内容包含结束标记,或长度的特殊条目,或者您可能避免使用2D数组,并且使用一些类
(例如,使用操作符[]