096 指针的运算

#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;
}