c语言中指针有哪些运算符,大牛带你学 | C语言的指针及相关运算符总体归纳

前言

在全国各个计算机考研学校中,不少自命题学校会考察“程序设计”这门课程,但是市场上的计算机考研资料却少有涉及C语言和程序设计的。为了弥补这个缺陷,大牛学长将会在接下来的一段时间中不断为大家带来程序设计中的重难点解析。

今天我们先来看一个C语言编程中同学们很熟悉但又不那么清晰的知识点—— 指针。如果同学们首次接触C,遭遇的第一个难题应该就是对于指针的理解,我相信读完这篇文章你就能够完全掌握指针这一概念,以及如何在C中去灵活的运用指针。

那么废话不多说

here we go~

b325f51e12c441bc8c693ab0cd4f0a20.jpg

预备知识

数据在计算机当中的存储形式

cccc173482f04f9fbe45e4434e293c33.jpg

我们可以对这个存储空间做一系列操作。

C的变量在计算机当中的表示形式

我们知道形如int a = 10,这样的语句表明我们声明了一个int类型的变量,命名为a,赋值10,如果我们打印a,调用printf(a),会打印输出10。那么在实际的计算机当中是如何完成这个过程的呢?

cfc71dd0de714e1c90a47bbd6fab35d5.jpg

看到这里,大家就已经拥有了学习指针,理解指针的所有知识了。

dd475d24792442b7a00785acc6dfb5b0.jpg

f60b7ef8b5324b31b3d82c0c240a3c34.jpg

62264e98aae54a31aebe4378a61b2585.jpg

那么什么是指针呢?

7e919640cb6b45f8bc7f32667d60b64e.jpg

dd475d24792442b7a00785acc6dfb5b0.jpg

f60b7ef8b5324b31b3d82c0c240a3c34.jpg

指针

我们使用一个特殊的运算符ElemType*,在数据类型后面跟上一个 *,读作xx类型的指针。

69a1ff3c4a354578a36f1a7e9040c6df.jpg

cfc71dd0de714e1c90a47bbd6fab35d5.jpg

对于图中的b,执行下面两句代码:

printf(b);

输出:2

printf(*b);

输出:10

一定要注意!

这时候,我们引进 & 这个操作符。(&操作符也是同学们经常不能完全理解的操作符)

还是对于上图中的b,执行这句代码:

printf(&b);

printf(&a);

输出:0和2

069cbd7ba4d14eec8ef7424269ba4b8e.jpg

上图是执行以下代码之后的结果:

int a = 10;

int b = a;

int &c = a;

我们可以观察到b和c的区别,b虽然也是赋值为10,但是b和a指向了不同的存储单元,只是保存的值的内容相同。但是c是直接指向a的存储单元。引用表示的是使得这个变量和另一个变量共享存储单元。

进一步:

a = 20;

其实直接看是不是形如(数据类型) & 变量名就可以了。

特别注意,当函数的形参是引用类型的时候,实参不需要加上&符号,例如:

void swap(int &a, int &b){

int c = a;

a = b;

b = c;

}//交换两个数

int main(){

int a = 10;

int b = 20;

swap(a, b);

return 0;

}

执行之后,a = 20, b = 10

最后复习一下前面学到的*和&的用法。观察下面的代码:

int a = 10;

int *b = &a;

int c = *&a;

int &d = c;

执行后如图所示,a = 10, *b = 10, c = 10,d = 10,b = 3

b4095b6f661b41acb182d69ad8ea37a9.jpg

今天是2020年8月16日

距离2021年考研还有125天

生活本沉闷

跑起来才有风

a0962267492a4592831a97be68ca514f.jpg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值