Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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++中的C++数组作为参数,遇到了一些问题。我经历了这一切,还是没能解决这个问题 C++ #include<iostream> using namespace std; void comb(int a[]) { int alen = sizeof(a)/sizeof(*a); cout << alen << endl; /* Since 'I' know the size of a[] */ for(int i = 0; i < 7; i++) cout << a[i] << " "; cout << endl; } int main() { int a[] = {1,2,3,4,5,6,7}; comb(a); } Output 2 1 2 3 4 5 6 7 C++ #包括 使用名称空间std; 空梳(int a[]) { int alen=sizeof(a)/sizeof(*a); cout_C++ - Fatal编程技术网

在C++; 我尝试了C++中的C++数组作为参数,遇到了一些问题。我经历了这一切,还是没能解决这个问题 C++ #include<iostream> using namespace std; void comb(int a[]) { int alen = sizeof(a)/sizeof(*a); cout << alen << endl; /* Since 'I' know the size of a[] */ for(int i = 0; i < 7; i++) cout << a[i] << " "; cout << endl; } int main() { int a[] = {1,2,3,4,5,6,7}; comb(a); } Output 2 1 2 3 4 5 6 7 C++ #包括 使用名称空间std; 空梳(int a[]) { int alen=sizeof(a)/sizeof(*a); cout

在C++; 我尝试了C++中的C++数组作为参数,遇到了一些问题。我经历了这一切,还是没能解决这个问题 C++ #include<iostream> using namespace std; void comb(int a[]) { int alen = sizeof(a)/sizeof(*a); cout << alen << endl; /* Since 'I' know the size of a[] */ for(int i = 0; i < 7; i++) cout << a[i] << " "; cout << endl; } int main() { int a[] = {1,2,3,4,5,6,7}; comb(a); } Output 2 1 2 3 4 5 6 7 C++ #包括 使用名称空间std; 空梳(int a[]) { int alen=sizeof(a)/sizeof(*a); cout,c++,C++,将数组指定为函数参数时,它将降级为指针。因此sizeof(a)是指针的大小,而不是(字节)数组的大小。您需要将长度作为单独的参数传入,或者使用类似std::vector的方法将数组指定为函数参数时,它将降级为指针。因此sizeof(a)是指针的大小,而不是(字节)数组的大小。您需要将长度作为一个单独的参数传入,或者使用类似于std::vector的方法。C不会将数组的长度存储在内存中,因此调用的函数没有方法 知道数组的长度 sizeof在编译时计算,除非将其应用于数组文字,否则将无法获得数组的长

将数组指定为函数参数时,它将降级为指针。因此
sizeof(a)
是指针的大小,而不是(字节)数组的大小。您需要将长度作为单独的参数传入,或者使用类似
std::vector

的方法将数组指定为函数参数时,它将降级为指针。因此
sizeof(a)
是指针的大小,而不是(字节)数组的大小。您需要将长度作为一个单独的参数传入,或者使用类似于
std::vector

的方法。C不会将数组的长度存储在内存中,因此调用的函数没有方法 知道数组的长度

sizeof
在编译时计算,除非将其应用于数组文字,否则将无法获得数组的长度


您可能想考虑通过引用来传递<代码> STD::vector 。

C不将数组的长度存储在内存中,因此调用的函数没有办法。 知道数组的长度

sizeof
在编译时计算,除非将其应用于数组文字,否则将无法获得数组的长度


您可能想考虑通过引用来传递<代码> STD::vector < /代码> .< /P>为什么输出是2?如果指针的大小是<代码> int <代码>的两倍,逻辑不应该是代码> siZeof(a)/siZeof(a(0))。?@syb0rg,真的没关系。@syb0rg我正在使用*a访问同一个元素,那么输出是2?如果指针的大小是

int
的两倍,那么逻辑不应该是
sizeof(a)/sizeof(a[0])
?@syb0rg,真的没关系。@syb0rg我正在使用*ao访问同一个元素,或者使用模板,或者使用
std::array
。或者数组引用/指针。但是std::vector应该是默认值。数组的第一条规则是“不要使用数组”。为了完整起见:
void comb(int(&a)[7])
或者
void comb int(*a)[7])
7
可以通过上面提到的模板来推导。谢谢。我已经使用了vector并正确地实现了它。或者使用了模板,或者使用了
std::array
。或者数组引用/指针。但是std::vector应该是默认值。数组的第一条规则是“不要使用数组”。为了完整起见:
void comb(int(&a)[7])
void comb(int(*a)[7])
。如上所述,
7
可以通过模板进行推导。谢谢。我使用了vector并正确实现了它。