c中的数组数组

发布于 2024-12-01 19:23:45 字数 33 浏览 1 评论 0原文

是否可以在c中创建数组的数组

谢谢。

Is it possible to create an array of arrays in c

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

戴着白色围巾的女孩 2024-12-08 19:23:45

它与 PHP 中的示例相同:

int arrayInArray[10][50];

您可以使用以下命令从中读取数据:

printf("%d", arrayInArray[3][37]);

It's the same as for example in PHP:

int arrayInArray[10][50];

You read data out of it with:

printf("%d", arrayInArray[3][37]);
﹏半生如梦愿梦如真 2024-12-08 19:23:45

我敢打赌你的意思是多维数组而不是“数组的数组”。

此主题的一些链接:

I bet you mean Multi Dimensional Array instead of "array of arrays".

Some links for this topic:

计㈡愣 2024-12-08 19:23:45

为了使用具有 C 语言全部功能的数组数组,您应该了解一些 C 语言中动态内存处理的知识,包括函数 malloc、realloc 和 free,以及一些关于指针的知识。对于这个例子,你问一个可能的解决方案是这样的:

#include <stdio.h>
void main(int argc, char* argv[]){

    int** myArray; /* This would be a double pointer, because you want a two dimension array.*/
    int firstDimension = 10;
    int secondDimension = 20;
    int i;

    myArray = (int**)malloc(firstDimension*sizeof(int*)); This way you initialize the first dimension of the array.

    for(i = 0; i < firstDimension; i++){
        myArray[i] = (int*)malloc(secondDimension*sizeof(int));
    }

    /*Once you have the array initialized, you can access in the way myArray[i][j];*/

   /*For releasing resources */
    for(i = 0; i < firstDimension; i++){
        free(myArray[i]);
    }
    free(myArray);
}

这是动态的方式,CS 课程教授的方式。

For using an array of arrays with all the power of C you should have some knowledge of dynamic memory handling in c, with the functions malloc, realloc, and free, and some knowledge about pointers. For this example that you ask a possible solution would be this:

#include <stdio.h>
void main(int argc, char* argv[]){

    int** myArray; /* This would be a double pointer, because you want a two dimension array.*/
    int firstDimension = 10;
    int secondDimension = 20;
    int i;

    myArray = (int**)malloc(firstDimension*sizeof(int*)); This way you initialize the first dimension of the array.

    for(i = 0; i < firstDimension; i++){
        myArray[i] = (int*)malloc(secondDimension*sizeof(int));
    }

    /*Once you have the array initialized, you can access in the way myArray[i][j];*/

   /*For releasing resources */
    for(i = 0; i < firstDimension; i++){
        free(myArray[i]);
    }
    free(myArray);
}

This is the dynamic way, the one that is teached on CS courses.

む无字情书 2024-12-08 19:23:45

如果您需要数组的数组,那么您应该使用结构。

typedef ArrayStruct* ArrayStructPtr;

struct ArrayStruct
    {
void* array;//Node array
ArrayStructPtr arrays;//Pointer to sub arrays
};
int main()
{
ArrayStruct* a;//Declare Some Arrays
a=(ArrayStruct*)malloc(sizeof(ArrayStruct)*N);
for(int i=0;i<N;i++)
{
a[i].array=(void*)malloc(sizeof(int)*N);//Malloc the actual array
a[i].arrays=NULL;//Malloc subarrays if needed
}
//add subarray on array 0
ArrayStruck * temp=(ArrayStruct*)malloc(sizeof(ArrayStruct));
temp->array=(void*)malloc(sizeof(char)*MAXNAME*N);
temp->arrays=NULL;
a[0]=arrays=temp;
return 0;
}

您需要的是一个数组列表,其中结构的每个节点都可以保存一个数组和指向另一个节点的指针。
数组类型为void*,支持int、float、char*。

因此,每个数组可以有任意数量的子数组。如果需要,您可以创建 3 维数组!

If you need an array of arrays then you should use structs.

typedef ArrayStruct* ArrayStructPtr;

struct ArrayStruct
    {
void* array;//Node array
ArrayStructPtr arrays;//Pointer to sub arrays
};
int main()
{
ArrayStruct* a;//Declare Some Arrays
a=(ArrayStruct*)malloc(sizeof(ArrayStruct)*N);
for(int i=0;i<N;i++)
{
a[i].array=(void*)malloc(sizeof(int)*N);//Malloc the actual array
a[i].arrays=NULL;//Malloc subarrays if needed
}
//add subarray on array 0
ArrayStruck * temp=(ArrayStruct*)malloc(sizeof(ArrayStruct));
temp->array=(void*)malloc(sizeof(char)*MAXNAME*N);
temp->arrays=NULL;
a[0]=arrays=temp;
return 0;
}

What you need is a List Of arrays Where each node of the struct can hold an array and a pointer to another node.
The array type is void* to support int,float,char*.

So each array can have as many subarrays as you want.You can create 3 dimension Arrays if you want!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文