我对c ++中的数组有一个简单的问题。 假设对于程序,我想为数组的每个单独的下标组件存储一个特定的值。我想创建一个函数来完成它,这里的问题是我想要一种存储单个值并记住它的方法。由于函数中的局部变量会擦除其内存,我知道我们需要使用静态变量,但我不知道该怎么做。 谢谢 Varun G.
假设我有功能
int calculate(int array[], int size)
{
int i;
for(i=0; i<10; i++)
{
array[i]=0;
}
if(size >= 0 && size <=9)
{
array[size] = array[size]+1;
}
}
这里我想基本上创建10个数字全部为0的数组然后如果它落在0到9之间的范围内我想在特定位置加1,我还想记住位置和值我下次可以重复一遍
例如,如果我输入9 2次,当我希望它为2时,array[size]
将为1
答案 0 :(得分:0)
你的意思是这样吗?
#include <iostream>
int f(int i) {
static const int data[8] = { 1, 1, 2, 3, 5, 8, 13, 21 };
return data[i];
}
int main() {
std::cout << f(4) << std::endl;
return 0;
}
答案 1 :(得分:0)
#include <iostream>
#include <cstdlib>
#include <ctime>
void init( int a[], size_t n )
{
std::srand( ( unsigned int )std::time( 0 ) );
for ( size_t i = 0; i < n; i++ ) a[i] = std::rand() % n;
}
int main()
{
const size_t N = 10;
int a[N];
init( a, N );
for ( int x : a ) std::cout << x << ' ';
std::cout << std::endl;
}
另一种方式
#include <iostream>
#include <array>
void init( std::array<int, 10> &a )
{
a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
}
int main()
{
std::array<int, 10> a;
init( a );
for ( int x : a ) std::cout << x << ' ';
std::cout << std::endl;
}
如果必须在函数内部更改数组的大小,那么最好使用类std::vector
而不是数组
答案 2 :(得分:0)
我认为你正在寻找这些方面的东西:
int calculate( int size )
{
static int a[10] = { 0 };
if ( size >= 0 && size < 10 )
{
++a[size];
return a[size];
}
return -1;
}
数组只会初始化一次,并会在调用之间保留其值。