无法以C++打印阵列

Unable to print array in C++

本文关键字:打印 阵列 C++      更新时间:2023-10-16

我无法让以下代码正常工作。

#include <iostream>
using namespace std;
void neuron(double inputs[])
{
    for (int i = 0; i < sizeof(inputs); i++) {
        cout<<inputs[i];
    }
}
int main()
{
    double inputs[] = {10,12,12};
    neuron(inputs);
    return 0;
}

我想将数组传递给函数neuron然后打印元素。我做不到。代码给了我垃圾值。这段代码有什么问题?

#include <iostream>
using namespace std;
template<size_t size>
void neuron(double (&inputs)[size])
{
    for (size_t i = 0; i < size; i++) {
        cout<<inputs[i]<<endl;
    }
}
int main()
{
    double inputs[] = {10,12,12};
    neuron(inputs);
    return 0;
}

如果将

inputs传递给neuronneuron只会看到数组的起始地址,而不会看到数组的长度。您需要将长度作为额外参数传递。也不是说sizeof给你数组的大小(以字节为单位(,而不是元素的数量。

void neuron(double inputs[], size_t len)
{
    for (int i = 0; i < len; i++) {
        cout<<inputs[i];
    }
}
int main()
{
    double inputs[] = {10,12,12};
    neuron(Inputs, sizeof inputs / sizeof inputs[0]);
    return 0;
}

由于您的问题被标记为C++因此您最好使用C++ STL 类型,如 std::vector(对于动态大小的数组(或std::array(对于固定大小的数组(。

您正在传递 arrray 的第一个元素的指针,因此大小将是双精度。
这就是我的方式:

#include <iostream>
using namespace std;
void neuron(double inputs[], int size)
{
    for (int i = 0; i < size; i++) {
        cout<<inputs[i];
    }
}
int main()
{
    double inputs[] = {10,12,12};
    neuron(inputs, sizeof(inputs)/sizeof(double));
    return 0;
}

只需尝试以下代码

#include <iostream>
using namespace std;

void neuron(double inputs[],int length)
{
    for (int i = 0; i <length; i++) {
        cout<<inputs[i];
    }
}
int main()
{
    double inputs[] = {10,12,12,22,22};
    neuron(inputs, (sizeof(inputs)/sizeof(*inputs)));
    return 0;
}

sizeof(( 返回基元类型的大小而不是数组的大小。