无法在C ++中打印数组

时间:2017-02-15 08:59:42

标签: c++ arrays

我无法让以下代码正常运行。

private void GetObject()
{
    ResultText.text = string.Format("fetching {0} from bucket {1}", SampleFileName, S3BucketName);
    Client.GetObjectAsync(S3BucketName, SampleFileName, (responseObj) =>
        {
            string data = null;
            var response = responseObj.Response;
            if (response.ResponseStream != null)
            {
                using (StreamReader reader = new StreamReader(response.ResponseStream))
                {
                    data = reader.ReadToEnd();
                }

                ResultText.text += "\n";
                ResultText.text += data;
            }
            Debug.Log("GetObject: " + data);
        });
}

我想将数组传递给函数#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; } ,然后打印元素。我无法做到这一点。代码给了我垃圾值。这段代码有什么问题?

4 个答案:

答案 0 :(得分:4)

#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;
}

example

答案 1 :(得分:0)

如果您将inputs传递给neuron,那么neuron只能看到数组的起始地址,它将看不到数组的长度。您需要将长度作为额外参数传递。同样不是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(对于固定大小的数组)。

答案 2 :(得分: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()返回基本类型的大小,而不是数组的大小。

答案 3 :(得分:0)

您正在传递arrray第一个元素的指针,因此大小将为double的大小 这就是我想要的:

#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;
}