是否可以制作一个数组数组?

时间:2015-03-07 21:43:51

标签: c++ arrays

我正在编写一个程序来模拟c ++中的缓存,并试图将文件中给出的地址复制到数组中。我正在努力弄清楚如何将数组复制到另一个数组,以便我可以拥有一个内存地址数组数组。我已经在地址中读到了一个名为" address"的数组。我希望我的模拟缓存是一个名为" L1_Cache"的数组。 h是我将地址放入L1_Cache后递增的计数器。此外,缓存大小将是我的L1_Cache数组中可用的地址行数,这将由程序的用户决定。下面是我试图将数组放入另一个数组的片段。

if(sizeof(L1_Cache) < cachesize)
strcpy(L1_Cache[][h], address);

它们被定义为:

const char* address[10];
char* L1_Cache;

如果有人对如何将一个数组复制到另一个数组以制作阵列数组有任何建议,请告诉我。我不确定我所做的事情是否正确,但我正在努力解决这个问题。

我想将我给出的新地址与已经在L1_Cache数组中的旧地址进行比较。

2 个答案:

答案 0 :(得分:1)

是的,可以创建一个数组数组。

int a[3][3]; // a is an array of integer arrays

你有

a[0]; // this refers to the first integer array
a[1]; // this refers to the second array

以下是您要找的内容吗?

#include <iostream>
#include <cstring>

int main()
{
    char p[2][256];
    strncpy(p[0], "This is my first address", 256);
    strncpy(p[1], "This is my second address", 256);

    std::cout << p[0] << std::endl << p[1];

    return 0;
}

答案 1 :(得分:1)

是。它们被称为多维数组 它们可以有任意数量的尺寸 例如:

int foo[3][3]; // initialize the 2 dimensional array of integers
foo[0][0] = 1; // change a value
foo[0][1] = 2; // change a value
foo[0][2] = 3; // change a value
foo[1][0] = 4; // change a value
foo[1][1] = 5; // change a value
foo[1][2] = 6; // change a value
foo[2][0] = 7; // change a value
foo[2][1] = 8; // change a value
foo[2][2] = 9; // change a value
for(int i=0;i<3;++i){ // display the 2d array
    for(int j=0;j<3;++j){
        cout<<foo[i][j];
    }
    cout<<endl;
}

发生了什么:
pic
值以图表形式分配 可以把它想象成在一张纸的每个点上写一个值。