0

I'm new to C and trying to change the return type of a function. The problem is that, for example, these work:

float fct(int) 
float *fct(float)

But when I try to change the return type to:

float (*)[n]fct(int *n) 

The compiler issues an error:

error: expected identifier or ‘(’ before ‘)’ token

Even if it tells me to change the return type to float (*)[n].

It would be awesome if someone could explain what the issue is.

1

1 Answer 1

1

What you are looking for is:

float (*fct(int *n))[SIZE];

I should note that the compiler won't like it if SIZE is not a constant value.

The pointer must have an identifier which in this case is fct(int *n), it's as if you had something like (*ptr)[SIZE] only ptr is fct(int *n).

The compiler message omits the pointer identifier, as usual. It just tells you what the type should be and that is float (*)[n]. If, for example, the return type was to be pointer to int it would tell you the return type should be int*.

Now, on a different note, n size doesn't make much sense because you use in the function as a parameter, as a pointer to int.

You must also be careful not to return a pointer to a locally (in the function) declared array, you will need to allocate memory for it if you want it to outlive the function.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.