If you want to modify info[0].value[0], then you have to pass the address in and dereference that pointer within the function:
[code]
void addValue(char **info,char *value )
{
int size=strlen(value)+1;
*info= (char *)malloc(size);
strcpy(*info,value);
}
void test()
{
addValue(&(info[0].value[0]),"Inspiron");
}

If you want to modify info[0].value[0], then you have to pass the address in and dereference that pointer within the function:
[code]
void addValue(char **info,char *value )
{
int size=strlen(value)+1;
*info= (char *)malloc(size);
strcpy(*info,value);
}
void test()
{
addValue(&(info[0].value[0]),"Inspiron");
}

Again: why do you want to do this?I want to do this because I want to reduce the number of parameters passed to the function. Since it is a part of a large project so in furture remembering what the posVal or number passed means will be a problem.Like passing info[0].value[0] so it becomes clear the value I am intending to pass.

Also, what about posVal?

Since value inside structure is a double dimension array so posVal tells which position the value to be inserted like info[0].value[1] or info[0].value[2] here value[1]/[2] tells where the value to be inserted.