hello!

I have a function with the following definition:

void functionName(void** a);

When I want to call that function how am I supposed to send the arguments?

void* p; // Create a pointer to void
functionName(&p); // Pass its address to create a void**

Note that a void** isn't generic like void*, so you can't pass the address of a char* or int* when void** is expected.

Ok but what I have is a struct A(simple struct which just contains char* and int) and a pointer to that struct

A *a.

All I have done to the pointer is :

a=NULL;

What I need is to pass that pointer when I call the function above as void** the way you suggested.
(instead of void* p)
Can I perform a cast?
Or is there any other way to do it?
thanks in advance

What I need is to pass that pointer when I call the function above as void** the way you suggested.

As I said, void** is not generic. Given my previous example and your added information, you would do this:

void* p = a; // Create a pointer to void
functionName(&p); // Pass its address to create a void**

But at this point I'd question your use of void** in the first place when you're clearly not working with a pointer to void.

yes that's exatly what I did and it works.thanks a lot

A *a;
void* p;
p=a;
functionName(&p);

Now the thing is that I want to assign a certain position , let's say a[2] with a value of type A.
Should I use for the assignment

A b;
a[2]=b;

or

A b;
p[2]=b;

I'm asking because the second one returns an error,but I don't get why.
Now pointer a and pointer p point to the same or pointer p is pointer a?
I'm confused..

I'm asking because the second one returns an error,but I don't get why.

You should study up on pointers, because I sense a lot of confusion. Here's a tutorial that will get you started.

This article has been dead for over six months. Start a new discussion instead.