This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Can I take the address of a function argument?

I know this isn't a Keil specific question, but I know you guys are smart and that I'll just get a direct non-mocking answer.

Is it legal to take the address of a function argument?


void Bar(unsigned char *Pointer)
{
  // Access data byte via the pointer
}

int Foo(unsigned char Arg)
{
  Bar(&Foo); // <<<<<< Is this legal?
}

I know you cannot take the address of a variable of type register and I think that knowledge is clouding my memory.

Parents
  • "But note that your code didn't take the address of an argument but instead tried to get the address of the function itself - and you shouldn't use any & to get the address of a function. The function name itself represents the pointer to that function."

    Per, it does not matter whether you use & or not. You will still get the address of the function. In fact many quality analysis tools (e.g. QAC) recommend that you do use the & for clarity.

Reply
  • "But note that your code didn't take the address of an argument but instead tried to get the address of the function itself - and you shouldn't use any & to get the address of a function. The function name itself represents the pointer to that function."

    Per, it does not matter whether you use & or not. You will still get the address of the function. In fact many quality analysis tools (e.g. QAC) recommend that you do use the & for clarity.

Children