使用static在函数中存储数组的各个组件的值

时间:2014-08-07 19:18:03

标签: c++

我对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

3 个答案:

答案 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;
}

数组只会初始化一次,并会在调用之间保留其值。