char t[10]="hi"; 可变,内存动态存储区;数组在定义的时在动态内存声明了相应长度的区域,大小取决于数组的长度
char*p="hi"; 不可变,内存的静态存储区;"hi"是字面量(常量),不能通过"hi"=en来修改,指针p指向的是一块静态内存,其中数据不能动态更改
动态内存分配
malloc
void *malloc(unsigned int size)
在内存的动态存储区(堆)中分配一个长度为size的连续空间。返回值是一个系统分配的,连续内存空间的起始地址
分配失败返回NULL(所以使用前必须判断是否返回NULL)
malloc函数仅仅对指针生效
char*a;
a=(char*)malloc(10*sizeof(char));
if(a==NULL) {printf("fail");exit;}
free 释放内存
链表可以不预先分配内存空间,需要时动态申请内存