什么是指针?
指针最为简短的定义:指针即为内存的地址。
那什么是内存呢?
举个栗子:
当我们计算 4*(46+4)时,我们人脑会想到先有个中间值 50 然后再计算成 200,计算机也会这样有一个 50 的中间值,我们人脑在计算的时候 50 这个中间值保存在我们的万能的脑子中,计算机在出现最终答案前也会把这个中间值一个方便它进行下一步计算的地方,这地方就是内存。
实际上我们写程序的时候定义的所有变量都保存在内存中, 可以想象一个大的程序所占用的内存是不容小觑的,在计算机刚被制造出来的时候那些大佬是如何节省每一个字符的。
至今内存的占用是每一个合格的程序员所需要注意的事情。
至此我们得出一个结论:写程序需要尽可能少的内存。
那么内存的地址又是什么呢?
这个说来话长,简单举个例。
假如我们定义了char a = ’A’,当需要使用这个 ‘A’ 时,有两种调用(传值和传址);
1.直接调用变量a,
2.调用 a 的地址,即指向 a 的指针p (假设定义了char *p=&a)。
这里请思考一个问题: 究竟是 a 占用的内存大呢还是 p 占用的内存大?
a 显然只占了一个字节(char类型),那 p呢?p 占用了 4 个字节。既然 p 中存储的是 a 的地址,也就是说这个问题实际演变为了内存的地址需要多少位(bit)来编码。
再假如我们定义的 char a1[30]="C语言程序设计能够让你成为优秀的程序员"占用 30 个字节,也有一个 char *p1= a1 这个时候 a1占用 30 个字节而 p1 占用4个字节(字符串地址 = 首字符地址)。
那么假如你要引用的是一个 5G 的东西,用指针也还是 4 个字节即可。
由此我们得出结论:使用指针型变量在很多时候占用更小的内存空间。
指针的优点:
(1)可以提高程序的编译效率和执行速度,使程序更加简洁。
(2)通过指针被调用函数可以向调用函数处返回除正常的返回值之外的其他数据,从而实现两者间的双向通信。
(3)利用指针可以实现动态内存分配。
(4)指针还用于表示和实现各种复杂的数据结构,从而为编写出更加高质量的程序奠定基础。
(5)利用指针可以直接操纵内存地址,从而可以完成和汇编语言类似的工作。
(6)更容易实现函数的编写和调用。
缺点:
指针是一把双刃剑,如果对指针不能正确理解和灵活有效的应用,利用指针编写的程序也更容易隐含各式各样的错误,同时程序的可读性也会大打折扣。
指针是C语言的核心概念,也是C语言的特色和精华所在,更是初学者学习的难点所在。掌握了指针,才谈得上是真正掌握了C语言。
用C语言却不用指针,就像找个女人开房却聊天一晚上!

本文介绍了C语言中的指针概念,指针是内存地址,内存用于存储程序变量。指针的优点包括提高效率、双向通信、动态内存分配等,但过度使用可能降低代码可读性和引入错误。理解并掌握指针是学习C语言的关键。
808





