C struct initialization and pointer -


#include <stdio.h>  typedef struct hello{   int id; }hello;  void modify(hello *t);  int main(int argc, char const *argv[]) {   hello t1;   modify(&t1);   printf("%d\n", t1.id);   return 0; }  void modify(hello *t) {   t = (hello*)malloc(sizeof(hello));   t->id = 100; } 

why doesn't program output 100? problem malloc? have no idea initialize struct.

how can desired output editing modify only?

void modify(hello *t) {   t = (hello*)malloc(sizeof(hello));   t->id = 100; } 

should be

void modify(hello *t) {   t->id = 100; } 

memory statically allocated h1 again creating memory on heap , writing it.

so address passed function overwritten malloc() return address of malloc() memory on heap , not address object h1 stored.


Comments

Popular posts from this blog

java - Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX -

c# - Get rid of xmlns attribute when adding node to existing xml -