博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【扩展知识3】一些困难的数组
阅读量:6939 次
发布时间:2019-06-27

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

【扩展知识3】一些困难的数组

 

扩展文件夹

1.        &array+ 1

2.        array+1

3.        &array[ 0 ]+ 1

 

关于&array+ 、array+ 1 和&array[0]+ 1的问题。特别难缠,特难搞懂~—~。

所以今天拿来解说解说。

因为数组中的各元素的存储单元是连续分配的,因此能够用指针形式来訪问数组。数组名就是该数字的首个地址。

如: intarray[100];

      array 就是该数组的首地址,其值等于& array[0]

PS: 通过收地址,能够非常快的、方便的訪问数组中的其它元素值,方法例如以下:

        首地址+ 偏移量

第i 个元素的值能够是   *(array+i), *(&array[0]+i),  array[ i ]

 

array是数组首元素的首地址,&array[0]同样。而&array是取数组。

 

[程序1]

#include 
int main( void ){ int array[ 5 ]= { 1, 2, 3, 4, 5 }; printf( " array[ 1 ]= %d\n", array[ 1 ] ); printf( " *(array+1)= %d\n", *(array+ 1) ); printf( "*( &array[ 0 ]+ 1 )= %d\n", *(&array[ 0 ]+ 1 ) ); return 0;}

执行结果:

          array[ 1 ]= 2

         *(array+1)= 2

*(&array[ 0 ]+ 1 )= 2

 

[程序 2]

#include 
int main( void ){ int array[ 5 ]= { 1, 2, 3, 4, 5 }; printf( " array[ 1 ]= %d\n", array[ 1 ] ); printf( " *(array+1)= %d\n", *(array+ 1) ); printf( " *( &array+ 1 )= %d\n", *( &array+ 1 ) ); //越界 !。!

return 0; }

执行结果:

          array[ 1 ]= 2

         *(array+1)= 2

*(&array[ 0 ]+ 1 )= 2293440

 

分析:

array:   是数组首元素的首地址,也就是array[0]的首地址

&array:是取数组的首地址。

 

&array+ 1:

取数组array的首地址,该地址的值加上sizeof( array ),即&array+ 5* sizeof( int ),也是下一个数组的首地址。   

array+ 1://等同于&array[ 0 ]+ 1;

是取数组下一个元素的首地址,就是array[ 1 ]的首地址。

 

如图所看到的:

发现&array+ 1的地址越界了,其为array[5]的地址,即&array+ 1= &array+ 5* sizeof( int )。而array+1和&array[0]的地址就是array[1]的地址。

 

【指尖的微笑】错误在所难免,希望得到大家的指正^-^

转载时保留原文的链接http://blog.csdn.net/mirrorsbeyourself

版权声明:一半的人阅读这篇文章皆有(http://www.bangedushuren.cn/)技术部门LearnCoding(http://it.bangedushuren.cn/)原版的,转载请注明

你可能感兴趣的文章
ABAP常用函数集锦(转)
查看>>
python3.5 的str类型和bytes类型的转换
查看>>
使用摄像头或视频运行 ORB-SLAM2 SLAM14讲 第一次课后作业
查看>>
Nginx源码剖析之内存池,与内存管理
查看>>
优化网站设计系列文章总结和导读
查看>>
列数组Program perl 数据结构
查看>>
位域简介
查看>>
用CALayer实现聚光灯效果
查看>>
Atitit。sql2016标准化的规划方案 v3 q2a
查看>>
在Windows .NET平台下使用Memcached
查看>>
Webpack 入门指南 - 2.模块
查看>>
C++ STL中Map的按Key排序
查看>>
【转载】Redis的一些使用场景
查看>>
【转】CString与string、char*的区别和转换
查看>>
英语词汇(3)Call out to sb
查看>>
spring自己主动装配Bean属性
查看>>
面对苦难请勇敢
查看>>
安全加固总论
查看>>
消息中间件概述
查看>>
008_线上排障汇总
查看>>