博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言 数组与指针难点
阅读量:6292 次
发布时间:2019-06-22

本文共 613 字,大约阅读时间需要 2 分钟。

 C陷阱与缺陷中关于数组与指针部分做了清晰的讲解,解除了我对于数组的很多困惑。特摘取部分内容以作记录。

数组指针难点一:

定义数组 int a[3];

除了a被用作运算符sizeof的参数这一情形,

在其他所有的情形中,

数组名a都代表指向数组a中下标为0的元素的指针

个人理解为右图的逻辑结构(在实际内存中不一定如此)

 

因此,我们不难得出一个推论,*a即数组中下标为0的元素的引用。

例如,我们可以这样写*a = 84;

这个语句将数组a中下标为0的元素的值设置为84。

同样道理,*(a+1)是数组a中下标为1的元素的引用,

依次类推。概而言之,*(a + i)即数组a中下标为i的元素的引用;

这种写法是如此常用,因此他被简记为a[i]。

又因为a + i与i + a的含义相同,因此a[i]与i[a]具有同样的含义。但不推荐后种写法。

 

难点二:

给一个指针加上一个整数,与给该指针的二进制表示加上同样的整数,两者的含义截然不同。

如果定义一个指针ip指向一个整数,那么ip + 1指向的是计算机内存中的下一个整数

在大多数现代计算机中,他都不同于ip所指向地址的下一个内存位置

因此,如果让ip = a,即ip也指向数组a中下标为0的元素。

ip + 1指向的是数组a中下标为1的元素。

转载于:https://www.cnblogs.com/sdlwlxf/archive/2013/01/02/2842173.html

你可能感兴趣的文章
工作第十五周:上线前的惊悚
查看>>
Java获取EXE文件图标的方法
查看>>
深入解析Django Admin模块
查看>>
SQL Server死锁详解
查看>>
电影剧本写作基础
查看>>
7.11 计算机基础
查看>>
虚拟机 liunx系统以 root 身份登录权限
查看>>
《当程序员的那些狗日日子》(五十一)太不给力的年终奖
查看>>
LeetCode(203): Remove Linked List Elements
查看>>
Join和Relate作用和区别
查看>>
mysql中的意向锁IS,IX
查看>>
CSS学习笔记02float
查看>>
python库的学习系列之 15. Generic Operating System Services
查看>>
使用excel进行数据挖掘(5)---- 应用场景分析
查看>>
【CSS】隐藏多行文本框Textarea在IE中的垂直滚动栏
查看>>
2017-2018-1 《信息安全系统设计基础》实验一报告
查看>>
2017-2018-1 20155303 《信息安全系统设计基础》第五周学习总结
查看>>
0314考试总结
查看>>
Jquery 文字模拟输入效果
查看>>
linux 下 `dirname $0`
查看>>