我知道这与以前的问题类似,但我找不到合适的答案。
我正在尝试在函数中创建一个值数组,然后返回一个指向此数组的指针,以便在以后的函数和main函数中使用。我只是在理解如何正确发送和访问数组时遇到问题。以下是我的一部分代码(我只删除了不相关的部分)
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
double *PMS() {
static double w[128];
double dw = 0.05;
int i;
for (i = 1; i <= M; i++) {
w[i] = dw + (2*i - 1) * (dw/2.0);
cout << w[i] << endl;
}
cout << w[i] << endl;
return w;
}
//======================================================================
void RandSea() {
double *omega;
int i;
omega = PMS();
for (i = 0; i <=129;i++)
cout << *omega << endl;
}
int main() {
data(values);
Pierson_Moskowitz();
RandSeaState();
}
数组未正确地从RandSea函数中的0x6021e0
发送值cout<<omega<<endl;
。
omega的值只是零。
答案 0 :(得分:1)
这里有很多事情需要注意: -
1)数组索引从0开始,以size-1结束。
2)cout << omega << endl;
这将打印数组的基地址。
你应该使用: -
omega = PMS();
for ( int i = 0; i < 129; i++ ) <<<<Here 129 should be the number of elements array has
{
cout << *(omega + i) << endl;
}
3)您正在将数组的地址返回给调用者。如何知道数组中有多少元素。
&#34;我的第二个问题是,我也很难理解*和&amp; amp;之间的区别。指针&#34;
&amp;被称为&#34;地址&#34;运营商。它用于获取对象的地址。并且&#39; *&#39;是&#34;地址为&#34;指针上下文中的运算符。