Modify the contents of the memory address of the return of a function












6















Is it possible to modify the contents of the memory address of the return value of a function? functions return the value of a locally defined variable.



In the following example, compiled for my machine (x86-64) without warnings:



#include <stdio.h>

int get_val1()
{
int ret = 1;
return ret;
}

int get_val2()
{
int ret = 2;
return ret;
}

int get_val3()
{
int ret = 3;
return ret;
}

void redefine_ints(int *val1, int *val2, int *val3) {
*val1 = 10;
*val2 = 11;
*val3 = 12;
}

void print_and_redefine_ints(int val1, int val2, int val3) {
printf("val1 %d val2 %d val3 %dn", val1, val2, val3);
redefine_ints(&val1, &val2, &val3);
printf("rval1 %d rval2 %d rval3 %dn", val1, val2, val3);
}

int main()
{
print_and_redefine_ints(get_val1(), get_val2(), get_val3());
return 0;
}


I get the next output:



val1 1 val2 2 val3 3
rval1 10 rval2 11 rval3 12


This is the expected output, but how is it possible? Where are these variables stored?










share|improve this question




















  • 1





    redefine_ints(&val1, &val2, &val3); here you're passing references to the variables, that's the only point where they get changed.

    – Federico klez Culloca
    Jan 25 at 14:38






  • 2





    You are not modifying the return value of a function directly. print_and_redefine_ints(get_val1(), get_val2(), get_val3()); Here you pass the return values to another function by value.

    – Osiris
    Jan 25 at 14:40













  • I'm going to rephrase the question. Give me a few minutes to edit it.

    – HenryGiraldo
    Jan 25 at 14:42











  • You are not modifying anything that are in get_val1()/2/3. But, in print_and_redefine_ints(int val1, int val2, int val3) { ... } you are copying the return values of the functions (because you are calling this way : print_and_redefine_ints(get_val1(), get_val2(), get_val3());) I hope it helps

    – Cid
    Jan 25 at 14:43








  • 1





    The question title and the first sentence of the question don't make much sense

    – Jabberwocky
    Jan 25 at 14:48


















6















Is it possible to modify the contents of the memory address of the return value of a function? functions return the value of a locally defined variable.



In the following example, compiled for my machine (x86-64) without warnings:



#include <stdio.h>

int get_val1()
{
int ret = 1;
return ret;
}

int get_val2()
{
int ret = 2;
return ret;
}

int get_val3()
{
int ret = 3;
return ret;
}

void redefine_ints(int *val1, int *val2, int *val3) {
*val1 = 10;
*val2 = 11;
*val3 = 12;
}

void print_and_redefine_ints(int val1, int val2, int val3) {
printf("val1 %d val2 %d val3 %dn", val1, val2, val3);
redefine_ints(&val1, &val2, &val3);
printf("rval1 %d rval2 %d rval3 %dn", val1, val2, val3);
}

int main()
{
print_and_redefine_ints(get_val1(), get_val2(), get_val3());
return 0;
}


I get the next output:



val1 1 val2 2 val3 3
rval1 10 rval2 11 rval3 12


This is the expected output, but how is it possible? Where are these variables stored?










share|improve this question




















  • 1





    redefine_ints(&val1, &val2, &val3); here you're passing references to the variables, that's the only point where they get changed.

    – Federico klez Culloca
    Jan 25 at 14:38






  • 2





    You are not modifying the return value of a function directly. print_and_redefine_ints(get_val1(), get_val2(), get_val3()); Here you pass the return values to another function by value.

    – Osiris
    Jan 25 at 14:40













  • I'm going to rephrase the question. Give me a few minutes to edit it.

    – HenryGiraldo
    Jan 25 at 14:42











  • You are not modifying anything that are in get_val1()/2/3. But, in print_and_redefine_ints(int val1, int val2, int val3) { ... } you are copying the return values of the functions (because you are calling this way : print_and_redefine_ints(get_val1(), get_val2(), get_val3());) I hope it helps

    – Cid
    Jan 25 at 14:43








  • 1





    The question title and the first sentence of the question don't make much sense

    – Jabberwocky
    Jan 25 at 14:48
















6












6








6








Is it possible to modify the contents of the memory address of the return value of a function? functions return the value of a locally defined variable.



In the following example, compiled for my machine (x86-64) without warnings:



#include <stdio.h>

int get_val1()
{
int ret = 1;
return ret;
}

int get_val2()
{
int ret = 2;
return ret;
}

int get_val3()
{
int ret = 3;
return ret;
}

void redefine_ints(int *val1, int *val2, int *val3) {
*val1 = 10;
*val2 = 11;
*val3 = 12;
}

void print_and_redefine_ints(int val1, int val2, int val3) {
printf("val1 %d val2 %d val3 %dn", val1, val2, val3);
redefine_ints(&val1, &val2, &val3);
printf("rval1 %d rval2 %d rval3 %dn", val1, val2, val3);
}

int main()
{
print_and_redefine_ints(get_val1(), get_val2(), get_val3());
return 0;
}


I get the next output:



val1 1 val2 2 val3 3
rval1 10 rval2 11 rval3 12


This is the expected output, but how is it possible? Where are these variables stored?










share|improve this question
















Is it possible to modify the contents of the memory address of the return value of a function? functions return the value of a locally defined variable.



In the following example, compiled for my machine (x86-64) without warnings:



#include <stdio.h>

int get_val1()
{
int ret = 1;
return ret;
}

int get_val2()
{
int ret = 2;
return ret;
}

int get_val3()
{
int ret = 3;
return ret;
}

void redefine_ints(int *val1, int *val2, int *val3) {
*val1 = 10;
*val2 = 11;
*val3 = 12;
}

void print_and_redefine_ints(int val1, int val2, int val3) {
printf("val1 %d val2 %d val3 %dn", val1, val2, val3);
redefine_ints(&val1, &val2, &val3);
printf("rval1 %d rval2 %d rval3 %dn", val1, val2, val3);
}

int main()
{
print_and_redefine_ints(get_val1(), get_val2(), get_val3());
return 0;
}


I get the next output:



val1 1 val2 2 val3 3
rval1 10 rval2 11 rval3 12


This is the expected output, but how is it possible? Where are these variables stored?







c return-value






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 25 at 17:26









Sourav Ghosh

110k14130188




110k14130188










asked Jan 25 at 14:36









HenryGiraldoHenryGiraldo

18311




18311








  • 1





    redefine_ints(&val1, &val2, &val3); here you're passing references to the variables, that's the only point where they get changed.

    – Federico klez Culloca
    Jan 25 at 14:38






  • 2





    You are not modifying the return value of a function directly. print_and_redefine_ints(get_val1(), get_val2(), get_val3()); Here you pass the return values to another function by value.

    – Osiris
    Jan 25 at 14:40













  • I'm going to rephrase the question. Give me a few minutes to edit it.

    – HenryGiraldo
    Jan 25 at 14:42











  • You are not modifying anything that are in get_val1()/2/3. But, in print_and_redefine_ints(int val1, int val2, int val3) { ... } you are copying the return values of the functions (because you are calling this way : print_and_redefine_ints(get_val1(), get_val2(), get_val3());) I hope it helps

    – Cid
    Jan 25 at 14:43








  • 1





    The question title and the first sentence of the question don't make much sense

    – Jabberwocky
    Jan 25 at 14:48
















  • 1





    redefine_ints(&val1, &val2, &val3); here you're passing references to the variables, that's the only point where they get changed.

    – Federico klez Culloca
    Jan 25 at 14:38






  • 2





    You are not modifying the return value of a function directly. print_and_redefine_ints(get_val1(), get_val2(), get_val3()); Here you pass the return values to another function by value.

    – Osiris
    Jan 25 at 14:40













  • I'm going to rephrase the question. Give me a few minutes to edit it.

    – HenryGiraldo
    Jan 25 at 14:42











  • You are not modifying anything that are in get_val1()/2/3. But, in print_and_redefine_ints(int val1, int val2, int val3) { ... } you are copying the return values of the functions (because you are calling this way : print_and_redefine_ints(get_val1(), get_val2(), get_val3());) I hope it helps

    – Cid
    Jan 25 at 14:43








  • 1





    The question title and the first sentence of the question don't make much sense

    – Jabberwocky
    Jan 25 at 14:48










1




1





redefine_ints(&val1, &val2, &val3); here you're passing references to the variables, that's the only point where they get changed.

– Federico klez Culloca
Jan 25 at 14:38





redefine_ints(&val1, &val2, &val3); here you're passing references to the variables, that's the only point where they get changed.

– Federico klez Culloca
Jan 25 at 14:38




2




2





You are not modifying the return value of a function directly. print_and_redefine_ints(get_val1(), get_val2(), get_val3()); Here you pass the return values to another function by value.

– Osiris
Jan 25 at 14:40







You are not modifying the return value of a function directly. print_and_redefine_ints(get_val1(), get_val2(), get_val3()); Here you pass the return values to another function by value.

– Osiris
Jan 25 at 14:40















I'm going to rephrase the question. Give me a few minutes to edit it.

– HenryGiraldo
Jan 25 at 14:42





I'm going to rephrase the question. Give me a few minutes to edit it.

– HenryGiraldo
Jan 25 at 14:42













You are not modifying anything that are in get_val1()/2/3. But, in print_and_redefine_ints(int val1, int val2, int val3) { ... } you are copying the return values of the functions (because you are calling this way : print_and_redefine_ints(get_val1(), get_val2(), get_val3());) I hope it helps

– Cid
Jan 25 at 14:43







You are not modifying anything that are in get_val1()/2/3. But, in print_and_redefine_ints(int val1, int val2, int val3) { ... } you are copying the return values of the functions (because you are calling this way : print_and_redefine_ints(get_val1(), get_val2(), get_val3());) I hope it helps

– Cid
Jan 25 at 14:43






1




1





The question title and the first sentence of the question don't make much sense

– Jabberwocky
Jan 25 at 14:48







The question title and the first sentence of the question don't make much sense

– Jabberwocky
Jan 25 at 14:48














3 Answers
3






active

oldest

votes


















4














A draw may explain more than some text. I'll use only 1 get_val1() in that example.



print_and_redefine_ints(get_val1());
|
|
[CALL]
|
|
V
int get_val1()
{
int ret = 1;<----------------------------------------------------+
return ret; |
} | |
| |
[COPY OF VALUE] |
| |
| |
+---+ |
| |
| |
V |
void print_and_redefine_ints(int val1) { |
printf("val1 %dn"); ^ |
redefine_ints(&val1); | |
| +--------------------------------------------+ |
| | |
[POINTER AKA REFERENCE] | |
| | |
| | |
V | |
void redefine_ints(int *val1) { | |
*val1 = 10; //<---- the value is changed, then its referenced value (this one, NOT THIS ONE) is changed too
} |
|
+---+
|
[VALUE CHANGED]
|
|
V
printf("rval1 %dn", val1);
printf("original val1 %dn", get_val1()); //if you add this line, you'll notice the returned value of get_val1() is still 1
}





share|improve this answer





















  • 3





    It's considered rude not to upvote an answer with ASCII art.

    – Bathsheba
    Jan 25 at 14:59











  • haha thank you @Bathsheba that was a pain to write

    – Cid
    Jan 25 at 15:02



















5














Yes this is well-defined C.



The anonymous temporary ints created by get_val...() have a lifetime contemporaneous with the entire statement in which they are created.



But note that you take a value copy of each of these ints when you call print_and_redefine_ints so there's nothing particularly special going on here.



(Note that you would not be able to bind pointers to the anonymous temporary ints to int* function parameters though.)






share|improve this answer

































    3















    Is it possible to modify the contents of the memory address of the return (value) of a function?




    No, it is not.



    However, that is not the case here. In your code, the return values of get_val<n>() function calls are stored in the function parameters int val1, int val2, int val3. They are local to the called function. The lifetime of those variables are the function execution period.



    Quoting C11, chapter §6.2.1,




    [...] If the declarator or type specifier that
    declares the identifier appears inside a block or within the list of parameter declarations in
    a function definition, the identifier has block scope, which terminates at the end of the
    associated block. [....]




    and, from §6.9.1, Function definition,




    Each parameter has automatic storage duration; its identifier is an lvalue




    Thus, just like any other local variable, you can modify the content of those variables using their address.






    share|improve this answer

























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54367396%2fmodify-the-contents-of-the-memory-address-of-the-return-of-a-function%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      4














      A draw may explain more than some text. I'll use only 1 get_val1() in that example.



      print_and_redefine_ints(get_val1());
      |
      |
      [CALL]
      |
      |
      V
      int get_val1()
      {
      int ret = 1;<----------------------------------------------------+
      return ret; |
      } | |
      | |
      [COPY OF VALUE] |
      | |
      | |
      +---+ |
      | |
      | |
      V |
      void print_and_redefine_ints(int val1) { |
      printf("val1 %dn"); ^ |
      redefine_ints(&val1); | |
      | +--------------------------------------------+ |
      | | |
      [POINTER AKA REFERENCE] | |
      | | |
      | | |
      V | |
      void redefine_ints(int *val1) { | |
      *val1 = 10; //<---- the value is changed, then its referenced value (this one, NOT THIS ONE) is changed too
      } |
      |
      +---+
      |
      [VALUE CHANGED]
      |
      |
      V
      printf("rval1 %dn", val1);
      printf("original val1 %dn", get_val1()); //if you add this line, you'll notice the returned value of get_val1() is still 1
      }





      share|improve this answer





















      • 3





        It's considered rude not to upvote an answer with ASCII art.

        – Bathsheba
        Jan 25 at 14:59











      • haha thank you @Bathsheba that was a pain to write

        – Cid
        Jan 25 at 15:02
















      4














      A draw may explain more than some text. I'll use only 1 get_val1() in that example.



      print_and_redefine_ints(get_val1());
      |
      |
      [CALL]
      |
      |
      V
      int get_val1()
      {
      int ret = 1;<----------------------------------------------------+
      return ret; |
      } | |
      | |
      [COPY OF VALUE] |
      | |
      | |
      +---+ |
      | |
      | |
      V |
      void print_and_redefine_ints(int val1) { |
      printf("val1 %dn"); ^ |
      redefine_ints(&val1); | |
      | +--------------------------------------------+ |
      | | |
      [POINTER AKA REFERENCE] | |
      | | |
      | | |
      V | |
      void redefine_ints(int *val1) { | |
      *val1 = 10; //<---- the value is changed, then its referenced value (this one, NOT THIS ONE) is changed too
      } |
      |
      +---+
      |
      [VALUE CHANGED]
      |
      |
      V
      printf("rval1 %dn", val1);
      printf("original val1 %dn", get_val1()); //if you add this line, you'll notice the returned value of get_val1() is still 1
      }





      share|improve this answer





















      • 3





        It's considered rude not to upvote an answer with ASCII art.

        – Bathsheba
        Jan 25 at 14:59











      • haha thank you @Bathsheba that was a pain to write

        – Cid
        Jan 25 at 15:02














      4












      4








      4







      A draw may explain more than some text. I'll use only 1 get_val1() in that example.



      print_and_redefine_ints(get_val1());
      |
      |
      [CALL]
      |
      |
      V
      int get_val1()
      {
      int ret = 1;<----------------------------------------------------+
      return ret; |
      } | |
      | |
      [COPY OF VALUE] |
      | |
      | |
      +---+ |
      | |
      | |
      V |
      void print_and_redefine_ints(int val1) { |
      printf("val1 %dn"); ^ |
      redefine_ints(&val1); | |
      | +--------------------------------------------+ |
      | | |
      [POINTER AKA REFERENCE] | |
      | | |
      | | |
      V | |
      void redefine_ints(int *val1) { | |
      *val1 = 10; //<---- the value is changed, then its referenced value (this one, NOT THIS ONE) is changed too
      } |
      |
      +---+
      |
      [VALUE CHANGED]
      |
      |
      V
      printf("rval1 %dn", val1);
      printf("original val1 %dn", get_val1()); //if you add this line, you'll notice the returned value of get_val1() is still 1
      }





      share|improve this answer















      A draw may explain more than some text. I'll use only 1 get_val1() in that example.



      print_and_redefine_ints(get_val1());
      |
      |
      [CALL]
      |
      |
      V
      int get_val1()
      {
      int ret = 1;<----------------------------------------------------+
      return ret; |
      } | |
      | |
      [COPY OF VALUE] |
      | |
      | |
      +---+ |
      | |
      | |
      V |
      void print_and_redefine_ints(int val1) { |
      printf("val1 %dn"); ^ |
      redefine_ints(&val1); | |
      | +--------------------------------------------+ |
      | | |
      [POINTER AKA REFERENCE] | |
      | | |
      | | |
      V | |
      void redefine_ints(int *val1) { | |
      *val1 = 10; //<---- the value is changed, then its referenced value (this one, NOT THIS ONE) is changed too
      } |
      |
      +---+
      |
      [VALUE CHANGED]
      |
      |
      V
      printf("rval1 %dn", val1);
      printf("original val1 %dn", get_val1()); //if you add this line, you'll notice the returned value of get_val1() is still 1
      }






      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited Jan 25 at 15:01

























      answered Jan 25 at 14:54









      CidCid

      3,95821028




      3,95821028








      • 3





        It's considered rude not to upvote an answer with ASCII art.

        – Bathsheba
        Jan 25 at 14:59











      • haha thank you @Bathsheba that was a pain to write

        – Cid
        Jan 25 at 15:02














      • 3





        It's considered rude not to upvote an answer with ASCII art.

        – Bathsheba
        Jan 25 at 14:59











      • haha thank you @Bathsheba that was a pain to write

        – Cid
        Jan 25 at 15:02








      3




      3





      It's considered rude not to upvote an answer with ASCII art.

      – Bathsheba
      Jan 25 at 14:59





      It's considered rude not to upvote an answer with ASCII art.

      – Bathsheba
      Jan 25 at 14:59













      haha thank you @Bathsheba that was a pain to write

      – Cid
      Jan 25 at 15:02





      haha thank you @Bathsheba that was a pain to write

      – Cid
      Jan 25 at 15:02













      5














      Yes this is well-defined C.



      The anonymous temporary ints created by get_val...() have a lifetime contemporaneous with the entire statement in which they are created.



      But note that you take a value copy of each of these ints when you call print_and_redefine_ints so there's nothing particularly special going on here.



      (Note that you would not be able to bind pointers to the anonymous temporary ints to int* function parameters though.)






      share|improve this answer






























        5














        Yes this is well-defined C.



        The anonymous temporary ints created by get_val...() have a lifetime contemporaneous with the entire statement in which they are created.



        But note that you take a value copy of each of these ints when you call print_and_redefine_ints so there's nothing particularly special going on here.



        (Note that you would not be able to bind pointers to the anonymous temporary ints to int* function parameters though.)






        share|improve this answer




























          5












          5








          5







          Yes this is well-defined C.



          The anonymous temporary ints created by get_val...() have a lifetime contemporaneous with the entire statement in which they are created.



          But note that you take a value copy of each of these ints when you call print_and_redefine_ints so there's nothing particularly special going on here.



          (Note that you would not be able to bind pointers to the anonymous temporary ints to int* function parameters though.)






          share|improve this answer















          Yes this is well-defined C.



          The anonymous temporary ints created by get_val...() have a lifetime contemporaneous with the entire statement in which they are created.



          But note that you take a value copy of each of these ints when you call print_and_redefine_ints so there's nothing particularly special going on here.



          (Note that you would not be able to bind pointers to the anonymous temporary ints to int* function parameters though.)







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jan 25 at 15:14

























          answered Jan 25 at 14:44









          BathshebaBathsheba

          178k27254378




          178k27254378























              3















              Is it possible to modify the contents of the memory address of the return (value) of a function?




              No, it is not.



              However, that is not the case here. In your code, the return values of get_val<n>() function calls are stored in the function parameters int val1, int val2, int val3. They are local to the called function. The lifetime of those variables are the function execution period.



              Quoting C11, chapter §6.2.1,




              [...] If the declarator or type specifier that
              declares the identifier appears inside a block or within the list of parameter declarations in
              a function definition, the identifier has block scope, which terminates at the end of the
              associated block. [....]




              and, from §6.9.1, Function definition,




              Each parameter has automatic storage duration; its identifier is an lvalue




              Thus, just like any other local variable, you can modify the content of those variables using their address.






              share|improve this answer






























                3















                Is it possible to modify the contents of the memory address of the return (value) of a function?




                No, it is not.



                However, that is not the case here. In your code, the return values of get_val<n>() function calls are stored in the function parameters int val1, int val2, int val3. They are local to the called function. The lifetime of those variables are the function execution period.



                Quoting C11, chapter §6.2.1,




                [...] If the declarator or type specifier that
                declares the identifier appears inside a block or within the list of parameter declarations in
                a function definition, the identifier has block scope, which terminates at the end of the
                associated block. [....]




                and, from §6.9.1, Function definition,




                Each parameter has automatic storage duration; its identifier is an lvalue




                Thus, just like any other local variable, you can modify the content of those variables using their address.






                share|improve this answer




























                  3












                  3








                  3








                  Is it possible to modify the contents of the memory address of the return (value) of a function?




                  No, it is not.



                  However, that is not the case here. In your code, the return values of get_val<n>() function calls are stored in the function parameters int val1, int val2, int val3. They are local to the called function. The lifetime of those variables are the function execution period.



                  Quoting C11, chapter §6.2.1,




                  [...] If the declarator or type specifier that
                  declares the identifier appears inside a block or within the list of parameter declarations in
                  a function definition, the identifier has block scope, which terminates at the end of the
                  associated block. [....]




                  and, from §6.9.1, Function definition,




                  Each parameter has automatic storage duration; its identifier is an lvalue




                  Thus, just like any other local variable, you can modify the content of those variables using their address.






                  share|improve this answer
















                  Is it possible to modify the contents of the memory address of the return (value) of a function?




                  No, it is not.



                  However, that is not the case here. In your code, the return values of get_val<n>() function calls are stored in the function parameters int val1, int val2, int val3. They are local to the called function. The lifetime of those variables are the function execution period.



                  Quoting C11, chapter §6.2.1,




                  [...] If the declarator or type specifier that
                  declares the identifier appears inside a block or within the list of parameter declarations in
                  a function definition, the identifier has block scope, which terminates at the end of the
                  associated block. [....]




                  and, from §6.9.1, Function definition,




                  Each parameter has automatic storage duration; its identifier is an lvalue




                  Thus, just like any other local variable, you can modify the content of those variables using their address.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Jan 25 at 17:27

























                  answered Jan 25 at 14:45









                  Sourav GhoshSourav Ghosh

                  110k14130188




                  110k14130188






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54367396%2fmodify-the-contents-of-the-memory-address-of-the-return-of-a-function%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

                      ComboBox Display Member on multiple fields

                      Is it possible to collect Nectar points via Trainline?