在这个例子里,自然是看不出来好坏的,如果你用过Java,那自然会体会到指针的好处。我先大概说说,写程序的高手,在编写程序的会在脑海中浮现程序在编译的时候是什么样的,甚至会想起汇编语句。指针的好处就在于,它更加灵活,更加贴近硬件。好了,以上都是废话,举个例子,比如你需要计算一个16*16的矩阵消元,那么数据会非常的多和大,你得申请足够多的数组空间,弄不好还会造成溢出,为什么?因为采用数组计算时,是数据的交换,而不是内存地址的交换。如果采用指针的话,不会浪费空间,不会溢出
指针是保存内存地址的,例如int addr = 0x0000ffffff;char *a = addr; 这样a指针就保存了地址0x0000ffff,*a = 123456;就相当于在0x0000ffff地址处写入数据123456。* 相当于汇编的寻址操作
*a = b,这个是解引用。
相当于把b的值放到指针a所指向的地址空间中。
等你编写更多的代码,你就能体会到指针的精妙。
指针好处多多啊,举个简单的例子,如果你想编一个通用性很强的函数,你该如果处理不同类型的参数呢?有没有想过,传值和传址哪个开销大?
怎么会多次一举呢,比如char *p; char ch='m'; p只能指向ch的地址,如:p=&ch; ch还是等于'm'; 如果 *p='x'; 这时ch就等于‘x’了。
指针指向所存内容的地址,能够通过地址找到存储内容,有时候内容占空间巨大,直接引用占内存过于大不方便