【链接】由free()引发的对链表的探究(2):点击打开链接
【程序】
#include<stdio.h>
#include<stdlib.h>//malloc();free();calloc();
typedef struct list
{
int a;
struct list *next;
}A;
int main()
{
A a;//结构体用"."运算来调用子量
/*
printf("%d\n",a.a);//默认的:-858993460
printf("%c\n",a.a);//默认的:?
printf("%d\n",a.next);//默认的:-858993460
printf("%c\n",a.a);//默认的:?
printf("%d\n",a);//默认的:-858993460//结构体名就是指针
*/
/*
a=NULL;//编译报错
*/
/*
a.a=65;a.next=NULL;
printf("%d\n",a);//65
printf("%c\n",a);//A
printf("%d\n",a.a);//65
printf("%c\n",a.a);//A
printf("%d\n",a.next);//0
printf("%c\n",a.next);//' '
*/
/*
a.a=65;a.next=NULL;
free(a);//编译错误
//error C2664: 'free' : cannot convert parameter 1 from 'struct list' to 'void *'
//为什么这里不能把结构体名当指针来用了呢?
*/
return 0;
}
【结论】