Memset指向数组的指针

时间:2015-06-16 09:21:48

标签: c arrays pointers memset

我有一个指向数组的指针。我知道数组可以容纳多少项,但每个项的长度是动态的。那么在这种情况下如何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()

另外,我想为每个项目分配内存。怎么做?

3 个答案:

答案 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$