指针定义:
指针是一种数据类型,使用它可以用来定义指针变量,指针变量中存储的其实是整数,这种整数代表了内存的编号。
指针的使用:
1、函数之间相独立,但有些时候需要共享变量。
传参是值传递
全局变量容易命名冲突
使用数组还需要传递长度
命名空间是独立的,但地址空间是同一个,所有指针可以解决这个问题。
2、由于函数之间传参是值传递(内存拷贝),对于字节数比较多的变量,值传递效率较低,如果传递变量的地址只需要传递4|8字节。
3、堆内存无法取名字,它不能像data、bss、stack让变量名与内存建立联系,只能使用指针记录堆内存的地址来使用堆内存。
指针使用方法:
定义:类型* 变量名_p;
1、指针变量与普通变量的用法有很大区别,建议在取名以p结尾加心区分。
2、指针变量与普通变量一样默认值是随机的,一般初始为 NULL。
3、指针的类型决定了它可以访问多少个字节。
4、一个*只能定义一个指针变量。
int* p1,p2,p3; // 只有p1 是指针变量,p2,p3都是int类型变量
int *p1,*p2,*p3; // p1 p2 p3都是指针变量
赋值:变量名_p = 地址;
指向栈内存:
int* p = #
指向堆内存:
int* p = malloc(4);
解引用:*p
空指针变量中记录的内存编号去访问内存,该过程可能产生段错误,原因是里面存储的内存编号是非法的。
注意ÿ