定义指针:
int * p;
int i;
p=&i; //p是指向i地址的指针
*p=10; //指的是i的值变成了10
指针在使用前一定要赋值 确定指针指向哪里
*为指针变量赋的值必须是一个地址
将指针变量初始化为空指针,意为该变量不指向任何值 int ptr=NULL;
将变量地址赋值给指针
int a; int *p=&a; 或者 int a,*p; p=&a;
同类型的指针变量之间互相赋值
int a ,*pa=&a, *pb; pb=pa;
数组名就是指针
只是不能修改这个指针的指向
–可以吧数组的首地址赋给指针变量
short a[5],*p;
p=a;(或p=&a[0];)
此时 a[i]就是*(a+i),*(p+i),p[i] //说白了a就是p
// 而表示地址时则用:
a+i,p+i,&a[i],&p[i]
下列是否能表示数组元素的地址
a++:不能,数组名是地址常量,可以用:p++,p–,a+1
&p:不能,因为p已经是地址,&p表示a[i]的地址的地址
&p[i]:可以
malloc函数:
void * malloc(unsigned int size)
向系统申请大小为size的内存块,把首地址返回,申请不成功返回NULL
free函数:
void * free(void * p);
释放由malloc()申请的内存块,p是指向此块内存的指针