多级指针讨论
一级指针:*p
二级指针:**pp
int *p=&a;//定义一个一级指针 指向一个变量的地址
int pp=&p//定义一个二级指针指向一个一级指针的地址
**pp=1000;//这式子代表通过二级指针 修改a的值
*pp//这式子是代表 二级指针指向的内存地址 *pp=10的意思即是代表 二级指针指向了内存地址编号为10的内存单元
malloc
malloc建立堆区的时候,没有清理原内存的内容
可以用memst(p,0,i)清空i个地址的内容;
建立一个动态大小的指针
scanf("%c",&i)
char *p =malloc(sizeof(char)*i);
calloc
calloc建立堆区的时候自动清空开辟内存的内容
char *p =calloc(i,sizeof(char))
Realloc
char *p2=realloc(p1,100);//在原有的堆内存中继续追加内存
二级指针分配内存
void getheap(int **p,int N)
{
*p=malloc(sizeof(int)*N);//*p代表的是二级指针p所指向的地址
}
将一个静态变量的地址返回
const char *getstring()
{
return “hello”;
}