博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组的深入理解
阅读量:4971 次
发布时间:2019-06-12

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

C语言中:

                1、变量的定义: 对象和变量要区分

                   变量是一种声明,通过声明,把一个 名字(人为定义) 与 对象对应起来,当我们使用该名字的时候,就表示我们对该对象进行某种操作。

      但是并不是每个对象都有名字,也并不意味着有对应的变量。比如临时对象(temporary object)就没有一个名字与之关联

      (不要误称为临时变量,这是不正确的说法)按照C的定义,左值是一个引用到对象的表达式,通过左值我们可以取出该对象的值。

      通过可修改的左值表达式(modifiable lvalue)我们还可以修改该对象的值

                   例如:   对象 = 刘德华;在计算机中进行声明 char andy; 变量 = andy,andy上进行某种操作,即是对刘德华同种操作。

                2、& 只能对左值或函数 操作

                3、数组 是特殊的指针类型, 数组是常量指针,数组元素是只读的。

声明一个数组包括 :数据类型            数组名[数组长度]

例如  int a[5] = {10,20,30,40,50}.

指针指向一段 5个整型 的 连续内存.

因此  *(a+3)  = 40 ,取值符括号里面是地址。而偏移的地址等于 3*int(所占字节)。

 

                                回到代码中,只声明了 int类型 的 a[5] 数组,a+3这个变量并没有声明,也没有与之对应的对象,也不就存在。

                                如果用取地址符去取,根本无法取到对象的地址。肯定是错误的。因为每次重新运行程序,系统又会随机分配空余空间,所以第一张图与二、三

张图地址不一样,但是不影响,这里说明一下。而且细心的人可以发现两个数组地址是连续的。而且先存入内存的反而是低位,后存的反而是高位。

由图可知,整形数组a的每个元素之差为4个字节,本机整形占4个字节,字符型占1个字节

内存中划红线的2个16进制数分别 对应 10,20,30,40,50。每个数之间相隔4个字节。

同理可得

分别对应  a b c d ‘\0’

还有就是与数组不同类型的不可以赋值。代码中p类型一样才可以,赋地址成功。

  

 

转载于:https://www.cnblogs.com/Fsiswo/p/9286948.html

你可能感兴趣的文章
hint使用
查看>>
FLEX 通过url 得到网页内容 xml通信
查看>>
打包压缩
查看>>
PASCAL语言子集的词法、语法分析器之实现
查看>>
通用FTP Client模块设计与实现
查看>>
【javascript笔记】声明函数的三种方式
查看>>
嵌入式软件工程师C语言经典笔试2
查看>>
DPlot.v2.3.4.4 1CD DPlot适用于科学研究,工程技术的图表软件。用来显示2维,3维数据。...
查看>>
Django 中间件
查看>>
IFrame 框架的用法简介
查看>>
单词扭转,字符逆转
查看>>
RESTful规范
查看>>
struts 常用的标签
查看>>
Activity生命周期
查看>>
Python3基本数据类型
查看>>
hashlib模块 加密
查看>>
nodejs安装后在git bash 中输入node -v验证是否安装成功,但是提示:sh.exe": node :command not found,怎么解决?...
查看>>
jdbc之statement 与 preparedment
查看>>
Django(六)Session、CSRF、中间件
查看>>
【转】每天一个linux命令(11):nl命令
查看>>