当前位置: 首页 > news >正文

北京网站设计制作关键词优化微信小程序开发推广wordpress更改数据库密码

北京网站设计制作关键词优化微信小程序开发推广,wordpress更改数据库密码,建设部人力资源开发中心网站,设计什么网站简单目录 指针和数组 数组名和指针的区别 多维数组 数组指针 语法 作用 内存大小 自增运算 【】运算 指针和数组 结论:数组的本质就是指针。数组的【】运算同样可以用指针来运算 证明 C代码 int array[5];int* ptr{ &array[0] };*ptr 5;array[0] 5;arr…

目录

指针和数组

数组名和指针的区别

多维数组

数组指针

语法

作用

内存大小

自增运算

【】运算


指针和数组

结论:数组的本质就是指针。数组的【】运算同样可以用指针来运算

证明

C++代码

    int array[5];int* ptr{ &array[0] };*ptr = 5;array[0] = 5;array[1] = 5;array[2] = 5;

汇编代码

    int array[5];int* ptr{ &array[0] };
002014F1  mov         eax,4  
002014F6  imul        ecx,eax,0  
002014F9  lea         edx,array[ecx]  
002014FD  mov         dword ptr [ptr],edx  *ptr = 5;
00201500  mov         eax,dword ptr [ptr]  
00201503  mov         dword ptr [eax],5  array[0] = 5;
00201509  mov         ecx,4  
0020150E  imul        edx,ecx,0  
00201511  mov         dword ptr array[edx],5  array[1] = 5;
00201519  mov         eax,4  
0020151E  shl         eax,0  
00201521  mov         dword ptr array[eax],5  array[2] = 5;
00201529  mov         ecx,4  
0020152E  shl         ecx,1  
00201530  mov         dword ptr array[ecx],5  
int array[5];array[1] = 5;
int* ptr{ &array[0] };19   :  eax=4
002014F1  :  eax=41E  :   eax<<0
002014F6   :  exc=eax*021  :  array[4]=5
F9    :  edx=array[ecx]array[2] = 5;
FD   :  [ptr]=edx29  :  ecx=4
*ptr = 5;2E  :  ecx<<1 
00   :   eax=[ptr]30  :  array[8]=5
03   :   [eax]=5 
array[0] = 5;
09   :   ecx=4
0E  :  edx=ecx*0
11  :  array[edx]=5

从这里的汇编代码可以看出,每次偏移都是基于array进行偏移的,因为每句都有array的身影

而数组名也是一个地址,即指针。

【】就是个偏移符号,里面是1,就偏移1,是2 就偏移2

综上:array【0】里面,array代表起始地址,0代表了偏移量,偏移量是数组的下标,array【0】就是偏移了0,所以array就等于array【0】的地址

所以数组的下标也可以用作指针来表示

int array[2]{1,2};
int *ptr {array};
std::cout<<ptr[0];
ptr {&array[0]}
std::cout<<ptr[1];

这里输出了1和2

数组名和指针的区别

sizeof(array)sizeof(ptr)

第一个结果为20,第二个为4,因为sizeof还是把array当成数组来计算的,而不是指针

多维数组

既然数组即指针,那么多维数组也肯定不存在,那多维数组是什么呢?它其实是一段连续的内存.

int a[2][3]
{{1,2,3},{4,5,6}
};
int *ptr{a};

这段代码是错误代码,因为在多维数组里面,因为多维数组的数组名类型并不是整型指针

多维数组名的类型是是一个数组指针

数组指针

语法

int (*ptr) 【3】{}

表示有3个数组的指针。

作用

可以用来处理有一行3个数据的数组

把指针数组的声明列出来比较一下

int *ptr 【3】: 表示有3个指针的数组

所以上面正确代码应该为

int (*ptr) [3] {a};
std::cout<<ptr[0][1];

这里输出了1

内存大小

每个指针大小为4字节,那么数组指针大小也是4字节

自增运算

int (*ptr) [3] {a};

ptr++加的是3*int

【】运算

根据上文可以推断,a【0】,a是地址,0是偏移量,所以在多维数组里面,a【2】【3】里面的a【2】其实是一个地址,而3指的是偏移量

http://www.yayakq.cn/news/560293/

相关文章:

  • 怎么自己建设个网站国内外知名市场调研公司
  • 做店铺图片什么网站wordpress 首页链接
  • 网站网页建设论文保定哪家公司做网站
  • 模板式网站建设中山网站推广优化
  • 创建公司网站需要什么免费php企业网站管理系统
  • 别人是怎么建设网站的wordpress插件加密
  • 贸易公司 网站 扶持江苏省交通建设局网站
  • 烟台开发区网站郑州企业招聘
  • 温州网站制作价格网站建设公司骗人
  • 邢台网站建设公司排名做网站时默认字体是微软雅黑
  • 网站第三方微信登陆怎么做的网站规划与建设ppt
  • vs做的网站项目可以改名字吗布局网站建设
  • 能上传文件的网站建设公司名字
  • 国外产品展示网站模板沉默是金歌词谐音对照
  • 建设网站员工招聘策划方案高性能网站建设指南在线阅读
  • 建设网站的流程可分为哪几个阶段网络设计毕设
  • 努比亚网站开发文档公司名称及网址
  • 蓝色企业网站配色.net 网站管理系统
  • 24小时网站建设1个空间做两个网站
  • 网站开发与维护专员岗位职责phpwind 企业网站
  • 网推网站网站项目运营方案
  • 中和华丰建设有限责任公司网站优秀校园网站建设汇报
  • 电商类网站开发合同书烟台市建设局网站
  • 网站开发搭建合同seo站长工具综合查询
  • 个人网站的建设与管理德阳市建设局官方网站安全月
  • 怎么样优化网站seo孝感网站开发的公司电话
  • 中山市哪家公司做网站win主机 wordpress 404
  • 外贸网站如何做推广是什么意思北京的网站开发公司
  • 珠海建网站公司网站建设中广告图片尺寸
  • 安徽建站优化天元建设集团有限公司基本情况