0
点赞
收藏
分享

微信扫一扫

定义一个指针变量指向一维数组

女侠展昭 2022-02-16 阅读 82

1一维数组的定义和概念

2一维数组的特别之处

3指针偏移数组

1一位数组的定义和概念:存放字符的变量地址就是数组  int arr[10] ; 这个一维数组这样定义的意思是    它有10个元素大小有10个或者说长度有10   注意一点  在我们访问的时候是 从 0-9   。

2一位数组的特别之处   

我们常规的取首地址就是   &arr[0],这么写   感觉就很平淡无味     现在引入一个牛逼的写法   arr  就是首地址  arr就是数组名  数组名就是首地址    所以  首地址  就有两种写法

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAKigqKGFycitpKStq77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 首先定义两个指针来分别验证对比  用两种取首地址的方式   是否一样  结果是肯定的 。因为不管是函数名  数组名 字符串名  统统都可以理解为入口地址即首地址   

3指针偏移数组

指针增量与数组的关系

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAKigqKGFycitpKStq77yJ,size_20,color_FFFFFF,t_70,g_se,x_16

 p+1(指针加1)不代表他的地址数加了一位 而是它和初始化地址敲移了字节数   注意  他所处的地址还是一样的  还是在哪个区域走动  偏移的量取决于定义的类型 。

  可以归纳有两种取数组元素值的方法  1下标法 从0开始  访问元素   printf(“访问第一个数组元素 用下标法访问写法和值%d”,*(&arr[0]));  意思是先把取地址&××  最后把地址的值取出  就是*(&xxx)这里的括号要有  或者  可以把*(&xxx)等效于xxx  2指针法访问  

通过偏移的方式  达到各个元素的地址  

printf(“通过指针偏移访问各个元素地址并把值取出%d”,*(arr+1));   arr因为是  数组名所以数组名就是入口地址 即首地址  加一之后还是地址   最后要*运算符   才能把地址的值取出  

最后  归纳   数组的首地址  有两种方式  1arr 数组名就是首地址    2&arr[0]  指针的增量和数组的关系  当指针偏移时 并不是偏移一个地址  而是在同个区域 同个地址  偏移了字节数  偏移的量 取决于定义的类型   int是四个字节   char是一个字节  。

大家好好冲     !!!!!!!

 

 

 

举报

相关推荐

0 条评论