C语言教程:深入理解'&'和'*'运算符

需积分: 33 4 下载量 194 浏览量 更新于2024-07-13 收藏 8MB PPT 举报
"对“&”和“*”运算符的说明,C语言的特点,C程序的结构,C语言的历史背景" 在C语言中,“&”和“*”是两种非常关键的运算符,它们分别被称为地址运算符和指针解引用运算符。本节主要解释了“&”和“*”的用法及其相互结合时的含义。 首先,`&`运算符用于获取变量的内存地址。例如,如果有一个变量`a`,表达式`&a`会返回`a`在内存中的地址。这个地址通常是一个整数值,代表了变量在内存中的位置。 其次,`*`运算符用于访问通过地址存储的值,也就是解引用操作。当有一个指向变量`a`的指针`pointer_1`,表达式`*pointer_1`会返回`pointer_1`所指向的值,即`a`的值。 当我们同时使用这两个运算符,如`&*pointer_1`时,根据运算符的结合性,从右向左计算,先执行`*pointer_1`,这将得到`pointer_1`所指向的变量(这里是`a`),然后对这个变量应用`&`运算符,结果就是`a`的地址。因此,`&*pointer_1`与`&a`是等价的,都表示变量`a`的地址。 描述中提到了一个示例,`pointer_2 = &*pointer_1;` 这行代码意味着将`pointer_1`所指向的变量(即`a`的地址)赋值给`pointer_2`。如果之前`pointer_2`指向了另一个变量`b`,那么这个赋值操作会改变`pointer_2`的指向,使其不再指向`b`,而是指向了`a`。 C语言是一种强大的、高效的编程语言,起源于1970年代的B语言,由贝尔实验室的D.M.Ritchie改进并用于重写UNIX操作系统。随着1978年《The C Programming Language》一书的出版,C语言逐渐流行起来,并在不同类型的计算机上得到广泛移植。随着时间的推移,C语言经历了多次标准的更新,如ANSI C和ISO C,以适应不断发展的编程需求。尽管不同编译器可能有细微差异,但大多数现代C编译器都是基于ANSI C或其后续标准的。学习C语言时,了解所使用的编译器特性是很重要的。