如何创建指向指向c中节点的指针数组的指针?
How to create a pointer to array of pointers pointing to nodes in c?
Pointer to array of pointers pointing to nodes
我想创建一个指向指针数组的指针,数组中的指针指向节点。
你的意思是 data_type **identifier
,你可以在数组声明中添加 n 维。
data_type **identifier = malloc(sizeof(data_type))
然后例如分配这个数组的第一个元素可以是。
identifier[0] = malloc(size_of_this_array * sizeof(data_type))
也许你可以尝试将二维点节点数组图像化为一维向量。这将帮助您想象这个问题。
如果要设置多组节点坐标
第 1 组:node1X、node1Y、node2X、node2Y、node3X、node3Y .........
第 2 组:node1X、node1Y、node2X、node2Y、node3X、node3Y .........
第 3 组:node1X、node1Y、node2X、node2Y、node3X、node3Y .........
.......
void main()
{
//5 groups,each group have 4 nodes
int ** groups=(int**) malloc(5 * sizeof(int*));;
for (int i = 0; i < 5; i++) groups[i] = (int*)malloc(4*2 * sizeof(int));
//set
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 4; j++)
{
groups[i][j * 2] = j;
groups[i][j * 2 + 1] = j;
}
}
//printf
for (int i = 0; i < 5; i++)
{
printf("Group[%d]:", i);
for (int j = 0; j < 4; j++)
{
printf("node[%d]X=%d ", j, groups[i][j*2] );
printf("node[%d]Y=%d ,", j, groups[i][j*2+1]);
}
printf("\n");
}
for (int i = 0; i < 5; i++) free( groups[i]);
free( groups);
system("pause");
}
记得删除记忆!
Print result sample
Pointer to array of pointers pointing to nodes
我想创建一个指向指针数组的指针,数组中的指针指向节点。
你的意思是 data_type **identifier
,你可以在数组声明中添加 n 维。
data_type **identifier = malloc(sizeof(data_type))
然后例如分配这个数组的第一个元素可以是。
identifier[0] = malloc(size_of_this_array * sizeof(data_type))
也许你可以尝试将二维点节点数组图像化为一维向量。这将帮助您想象这个问题。
如果要设置多组节点坐标
第 1 组:node1X、node1Y、node2X、node2Y、node3X、node3Y .........
第 2 组:node1X、node1Y、node2X、node2Y、node3X、node3Y .........
第 3 组:node1X、node1Y、node2X、node2Y、node3X、node3Y .........
.......
void main()
{
//5 groups,each group have 4 nodes
int ** groups=(int**) malloc(5 * sizeof(int*));;
for (int i = 0; i < 5; i++) groups[i] = (int*)malloc(4*2 * sizeof(int));
//set
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 4; j++)
{
groups[i][j * 2] = j;
groups[i][j * 2 + 1] = j;
}
}
//printf
for (int i = 0; i < 5; i++)
{
printf("Group[%d]:", i);
for (int j = 0; j < 4; j++)
{
printf("node[%d]X=%d ", j, groups[i][j*2] );
printf("node[%d]Y=%d ,", j, groups[i][j*2+1]);
}
printf("\n");
}
for (int i = 0; i < 5; i++) free( groups[i]);
free( groups);
system("pause");
}
记得删除记忆!
Print result sample