C语言中“&”与“*”运算符解析

需积分: 21 1 下载量 128 浏览量 更新于2024-08-20 收藏 5.94MB PPT 举报
"对“&”和“*”运算符的说明以及C语言的历史和发展" 在C语言中,"&"和"*"是两种非常重要的运算符,它们与指针密切相关。"&"运算符称为取地址运算符,它用于获取变量的内存地址,而"*"运算符称为解引用运算符,它用于访问存储在特定地址的变量值。当这两个运算符结合在一起时,如"&* pointer_1",它们的优先级相同,但是从右向左结合。这意味着先执行"*"运算符,获取pointer_1所指向的变量的值,然后再对其取地址。由于pointer_1已经指向了变量a,所以"&* pointer_1"的结果就是变量a的地址,这与直接使用"&a"是一致的。 如果有语句"pointer_2 = &* pointer_1",这里首先执行解引用操作,得到pointer_1指向的变量a的值,然后将这个值(即a的地址)赋给pointer_2。这会导致pointer_2的指向发生改变,从原本可能指向的变量b变为指向变量a。 C语言起源于1970年代,最初是作为B语言的升级版由Dennis M. Ritchie在贝尔实验室设计的。B语言虽简洁且接近硬件,但存在数据类型缺乏的问题。C语言弥补了这些不足,同时保留了B语言的效率,被用于重写UNIX操作系统。随着UNIX的普及,C语言也开始流行,并在1978年有了由Brian W. Kernighan和Dennis M. Ritchie合著的经典教材《The C Programming Language》,通常被称为K&R。C语言在1983年被美国国家标准协会(ANSI)制定标准,后来成为ISO标准ISO 9899。随着时间的推移,C语言经历了多次修订,以适应不断发展的编程需求。 不同版本的C编译器可能会有一些特定的功能和语法差异,因此理解所使用的编译器特性至关重要。本书的内容主要基于ANSI C标准,读者在实际编程时也需要参考相应的编译器手册,以确保代码的兼容性和正确性。C语言因其高效、灵活和广泛的适用性,成为了全球范围内广泛采用的编程语言之一。