前几天看了一个程序,里面一段关于指针的代码让我非常纠结,看了很久才看懂,在这里将将其记录下来,希望能对大家有一定的帮助,先看示例程序(编译器gcc):
#include
#include
#include
typedef struct list_node
{
int data;
struct list_node *next;
}list_node, list, *plist_node;
static list *lst = NULL;
void insert(int dat)
{
plist_node pnode = malloc(sizeof(list_node));
assert(pnode != NULL);
pnode->data = dat;
pnode->next = lst;
lst = pnode;
}
int remove_item(int dat)
{
int cnt = 0;
plist_node pn, *ppn;
ppn = &lst;
while((pn = *ppn) != NULL)
{
if(pn->data == dat)
{
*ppn = pn->next;
free(pn);
++cnt;
}