Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 778831
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T19:49:45+00:00 2026-05-14T19:49:45+00:00

Why and how does dereferencing a function pointer just do nothing? This is what

  • 0

Why and how does dereferencing a function pointer just “do nothing”?

This is what I am talking about:

#include<stdio.h>

void hello() { printf("hello"); }

int main(void) { 
    (*****hello)(); 
}

From a comment over here:

function pointers dereference just
fine, but the resulting function
designator will be immediately
converted back to a function pointer


And from an answer here:

Dereferencing (in way you think) a
function’s pointer means: accessing a
CODE memory as it would be a DATA
memory.

Function pointer isn’t suppose to be
dereferenced in that way. Instead, it
is called.

I would use a name “dereference” side
by side with “call”. It’s OK.

Anyway: C is designed in such a way
that both function name identifier as
well as variable holding function’s
pointer mean the same: address to CODE
memory. And it allows to jump to that
memory by using call () syntax either
on an identifier or variable.


How exactly does dereferencing of a function pointer work?

  • 1 1 Answer
  • 2 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T19:49:46+00:00Added an answer on May 14, 2026 at 7:49 pm

    It’s not quite the right question. For C, at least, the right question is

    What happens to a function value in an rvalue context?

    (An rvalue context is anywhere a name or other reference appears where it should be used as a value, rather than a location — basically anywhere except on the left-hand side of an assignment. The name itself comes from the right-hand side of an assignment.)

    OK, so what happens to a function value in an rvalue context? It is immediately and implicitly converted to a pointer to the original function value. If you dereference that pointer with *, you get the same function value back again, which is immediately and implicitly converted into a pointer. And you can do this as many times as you like.

    Two similar experiments you can try:

    • What happens if you dereference a function pointer in an lvalue context—the left-hand side of an assignment. (The answer will be about what you expect, if you keep in mind that functions are immutable.)

    • An array value is also converted to a pointer in an lvalue context, but it is converted to a pointer to the element type, not to a pointer to the array. Dereferencing it will therefore give you an element, not an array, and the madness you show doesn’t occur.

    Hope this helps.

    P.S. As to why a function value is implicitly converted to a pointer, the answer is that for those of us who use function pointers, it’s a great convenience not to have to use &‘s everywhere. There’s a dual convenience as well: a function pointer in call position is automatically converted to a function value, so you don’t have to write * to call through a function pointer.

    P.P.S. Unlike C functions, C++ functions can be overloaded, and I’m not qualified to comment on how the semantics works in C++.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Possible Duplicate: How does dereferencing of a function pointer happen? If we have void
Possible Duplicate: How does dereferencing of a function pointer happen? void myprint(char* x) {
Possible Duplicate: How does dereferencing of a function pointer happen? Hi All, Why these
Please look at this peice of code :- #include<stdio.h> int main() { int arr[2][2]={1,2,3,4};
I'm not sure if I am just blind but i get this dereferencing pointer
Does anybody know why this function, when passed an invalid date (e.g. timestamp) to
Does anyone have a translate function for x/y positions after rotation in javascript? for
First, I acknowledge the possibility that this question could be a duplicate; just let
If overloading the dereferencing operator ( operator* ), does the member selection operator (
Possible Duplicate: When does invoking a member function on a null instance result in

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.