关于指针,很多C的书中会非常强调的说这是一个大的课题。初级的编程中很少用到,也能比较好的让程序跑起来。
但当你深入的了解的单片机的工作原理,或者在内存资源比较少的片子上,当你在一个函数中要调用另一个函数的时候,并且需要传入一个数组变量,不想去申明一个全局变量的时候
传址不传值就显的犹为重要。你只要把一个指针传递过去就行了。我们来举个例子:
voidResponseServer(void){ unsignedchar*P =malloc(100);//申请了一个内存空间,在堆中 for(unsigned char i=0;i
{
p[i] = i;
}
Socket_Send(*p,100);//通过网络发送free(p);}
voidSocket_Send(unsignedchar*p,unsignedcharlength){
//从网络按字节发送数据
}
我们可以看到,上面的代码实际上只是把一个8位型的指针给了socket_send了,这个函数只要按顺序使用P++就可以读取想要的数据,且一位一位的发出去。
当执行完下面的代码,其实动态申请的堆内存空间已经释放了。且这片空间可以被重复复用。想像一样,如果不使用指针来做,使用一个全局变量的话,这个空间是一直占用的,不够环保。
还有一个优点。代码可以做到相关性更小,移植性更大。
ResponseServer();
领取专属 10元无门槛券
私享最新 技术干货