我无法让以下代码正常运行。
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;
}
,然后打印元素。我无法做到这一点。代码给了我垃圾值。这段代码有什么问题?
答案 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;
}
答案 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;
}