鱼C论坛

 找回密码
 立即注册
查看: 2727|回复: 0

[技术交流] 《带你学C带你飞》第二十二讲:数组和指针

[复制链接]
发表于 2018-1-5 21:15:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
越努力,越幸运。欢迎大家来看我的笔记,不对的请各位大佬指正,谢谢

一、关于指针(复习复习)
注意的是取值运算符跟定义指针用的都是星号(*),这属于符号的重用,在不同的地方有不同的意义:在定义时表示定义一个指针变量;在其他位置表示获取指针变量指向的变量的值。
如:
  1. int a;
  2. int *p=&a;  //这就是:在定义时表示定义一个指针变量
  3. printf("%d\n",*p);    //这时就是:表示获取指针变量指向的变量的值。(即为a的值)
  4. scanf("%d",p);        //这时p表示为a的地址
复制代码


二、数组和指针
(1)虽然数组和指针关系密切,而且很多功能原理相似,但数组绝不是指针,它们时有区别的,下一讲会讲到。

(2)数组名是数组第一个元素的地址,也是数组的首地址。

(3)指向数组的指针,看下面代码:
  1. int a[] = {1, 2, 3, 4, 5};
  2. int *p;
  3. p = a; // 语句1
  4. p = &a[0]; // 语句2
复制代码

因为数组名即数组第一个元素的地址,所以语句 1 和语句 2 是等价的,都是将数组 a 的首地址存放到指针变量 p 中。

(4)综上两点我们可以知道为什么在使用scanf输入数组值的时候不加&了吧?

三、指针的运算
(1)当指针指向数组元素的时候,我们可以对指针变量进行加减运算,这样做的意义相当于指向距离指针所在位置向前或向后第 n 个元素。比如 p+1 表示指向 p 指针指向的元素的下一个元素;p-1 则表示指向上一个元素。

(2)注意在加减地址的时候要:*(p+1)或者*(p-1)。
不能 *p+1                 这样是对指针变量指向的变量的值减一。

(3)需要郑重强调的是:p+1 并不是简单地将地址加 1,而是指向数组的下一个元素。

(4)编译器怎么这么聪明呢?会知道我们是简单地将地址加 1,而是指向数组的下一个元素呢?其实并不是编译器聪明,而是因为我们自己告诉了编译器的。在哪里告诉了呢?就在我们定义指针变量的时候啊,不是要指定类型的吗。。。。所以。。。
如下图:
1.PNG


谢谢小甲鱼带来的视频教程,感谢!!

本节结束,多谢览阅!
越努力,越幸运。谢谢大家来看我的笔记,不对的请各位大佬指教,谢谢

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 09:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表