#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
int new_step(char **pps)
{
if (NULL == (*pps = malloc(5)))
return -1;
strcpy(*pps, "Step");
return 0;
}
int main(int argc, char *argv[])
{
int var = 0, *pvar = &var, **ppvar = &pvar;
printf("value of var:\t\t%d\n"
"address of var:\t\t%p\n"
"value of pvar:\t\t%p\n"
"address of pvar:\t%p\n"
"value of ppvar:\t\t%p\n"
"address of ppvar:\t%p\n",
var, &var, pvar, &pvar, ppvar, &ppvar);
assert(*pvar == var);
assert(*ppvar == pvar);
assert(**ppvar == var);
char *pstep = NULL, **ppstep = &pstep;
if (new_step(ppstep) == 0) {
printf("%s one.\n", *ppstep);
free(*ppstep);
}
return 0;
}