我有一个指向数组的指针。我知道数组可以容纳多少项,但每个项的长度是动态的。那么在这种情况下如何public class CustomGraph extends SimpleWeightedGraph<Node, DefaultWeightedEdge>{
/**
* Creates a new simple weighted graph with the specified edge factory.
*
* @param ef the edge factory of the new graph.
*/
public CustomGraph(EdgeFactory<Node, DefaultWeightedEdge> ef)
{
super(ef);
}
/**
* Creates a new simple weighted graph.
*
* @param edgeClass class on which to base factory for edges
*/
public CustomGraph(Class<? extends DefaultWeightedEdge> edgeClass)
{
this(new ClassBasedEdgeFactory<Node, DefaultWeightedEdge>(edgeClass));
}
}
数组。
memset()
另外,我想为每个项目分配内存。怎么做?
答案 0 :(得分:1)
首先,在定义时通过说
初始化数组Int8 *data[4] = { NULL }; //NULLify all the elements.
然后,您需要使用循环为数组的每个元素分配内存,例如
for (index = 0; index < 4; index++)
data[index] = calloc(SIZE, sizeof(Int8)); //SIZE is a MACRO
FWIW,calloc()
将返回&#34;零&#34;内存(如果成功),因此如果您希望将内存初始化为{{1},则无需单独memset()
}。
显然,您需要检查分配是否成功。
答案 1 :(得分:0)
首先,我要确定各个元素的大小。使用for循环并重复声明中的元素数量。
将sizeof返回等于一个整数,以便您可以访问它,然后为每个元素使用该整数进行memset。
Int8 *somedata;
for (int i = 0; i < 4; i++) { // for i less than 4 do increment i
memset(data[i], somedata, sizeof(data[i])); // memset data at point i, with value somedata, which has a size data[i]
}
希望能为你提供一些东西!
答案 2 :(得分:0)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main ( void )
{
int *pointer_array[4],i=0;
/* Allocating memory and storing the address in pointer_array[] */
for ( i=0; i<4; i++ )
{
pointer_array[i] = malloc ( sizeof(int) );
}
/* Memset the values with 0 */
for ( i=0 ;i<4; i++ )
{
memset( pointer_array[i], 0 , sizeof(int) );
}
/*printing the values */
for ( i=0 ;i<4; i++ )
{
printf ( "\n %d", *pointer_array[i] );
}
/* deallocating the memory */
for (i=0; i<4; i++ )
{
free ( pointer_array[i] );
}
return ( 0 );
}
output:
rabi@rabi-VirtualBox:~/rabi/c$ ./a.out
0
0
0
0rabi@rabi-VirtualBox:~/rabi/c$