#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int ID;
char Name [ 20 ] ;
} rec;
struct rec* addEntry( ) {
rec * temp;
printf ( "Please give me an ID number\n " ) ; temp-> ID = 42 ; // Fake
printf ( "Now give me a name, maximum size for this is 20 characters\n " ) ; strcpy ( temp
-> Name
, "Paul" ) ; // Fake return temp;
}
struct rec** returnPointerToPointerArray( )
{
rec ** pointerArray;
pointerArray
= malloc ( sizeof ( rec
* ) * 2 ) ; // Allocates 2 pointers pointerArray[ 0 ] = addEntry( ) ;
pointerArray[ 1 ] = addEntry( ) ;
printf ( "ID in main : %d\n " , pointerArray
[ 0 ] -> ID
) ; printf ( "Name in main : %s\n " , pointerArray
[ 0 ] -> Name
) ; printf ( "ID in main : %d\n " , pointerArray
[ 1 ] -> ID
) ; printf ( "Name in main : %s\n " , pointerArray
[ 1 ] -> Name
) ;
return pointerArray;
}
int main( void ) {
struct rec** ptr = returnPointerToPointerArray( ) ;
// Now free the memory :)
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0CnsKICAgIGludCBJRDsKICAgIGNoYXIgTmFtZSBbMjBdOwp9IHJlYzsKCnN0cnVjdCByZWMqIGFkZEVudHJ5KCl7CiAgICByZWMgKnRlbXA7CiAgICB0ZW1wID0gbWFsbG9jKHNpemVvZihyZWMpKTsKICAgIHByaW50ZigiUGxlYXNlIGdpdmUgbWUgYW4gSUQgbnVtYmVyXG4iKTsKICAgIHRlbXAtPklEID0gNDI7IC8vIEZha2UKCiAgICBwcmludGYoIk5vdyBnaXZlIG1lIGEgbmFtZSwgbWF4aW11bSBzaXplIGZvciB0aGlzIGlzIDIwIGNoYXJhY3RlcnNcbiIpOwogICAgc3RyY3B5KHRlbXAtPk5hbWUsICJQYXVsIik7IC8vIEZha2UKICAgIHJldHVybiB0ZW1wOwp9CgpzdHJ1Y3QgcmVjKiogcmV0dXJuUG9pbnRlclRvUG9pbnRlckFycmF5KCkKewogICAgcmVjICoqcG9pbnRlckFycmF5OwogICAgcG9pbnRlckFycmF5ID0gbWFsbG9jKHNpemVvZihyZWMqKSoyKTsgLy8gQWxsb2NhdGVzIDIgcG9pbnRlcnMKICAgIHBvaW50ZXJBcnJheVswXSA9IGFkZEVudHJ5KCk7CiAgICBwb2ludGVyQXJyYXlbMV0gPSBhZGRFbnRyeSgpOwogICAgcHJpbnRmKCJJRCBpbiBtYWluIDogJWRcbiIsIHBvaW50ZXJBcnJheVswXS0+SUQpOwogICAgcHJpbnRmKCJOYW1lIGluIG1haW4gOiAlc1xuIiwgcG9pbnRlckFycmF5WzBdLT5OYW1lKTsKICAgIHByaW50ZigiSUQgaW4gbWFpbiA6ICVkXG4iLCBwb2ludGVyQXJyYXlbMV0tPklEKTsKICAgIHByaW50ZigiTmFtZSBpbiBtYWluIDogJXNcbiIsIHBvaW50ZXJBcnJheVsxXS0+TmFtZSk7CiAgICAKICAgIHJldHVybiBwb2ludGVyQXJyYXk7Cn0KCmludCBtYWluKHZvaWQpIHsKCXN0cnVjdCByZWMqKiBwdHIgPSByZXR1cm5Qb2ludGVyVG9Qb2ludGVyQXJyYXkoKTsKCQoJLy8gTm93IGZyZWUgdGhlIG1lbW9yeSA6KQoJCglyZXR1cm4gMDsKfQo=