关于数组的&a[0]和&a及指针访问的问题
来源:互联网 发布:产品经理数据分析工具 编辑:程序博客网 时间:2024/05/18 02:05
#include <stdio.h>int main(void){int a[5]={ 1,2,3,4,5};int *ptr=(int *)(&a+1);//a数组中有5个数,但是注意这里(int *)(&a+1)这里的 //(&a)是整个数组的首地址,不是数组a[0]的首地址//所以在进行(&a+1)的时候是整个的数组往后移动了一个int位是指针指向了//存放数组a[5]的下一个位置所以在进行 ptr-1运算时实际上是进行的是//数组最后的位置减1是地址向上移动了一个位置,到了a[4]处//至于 *ptr=(int *)(&a+1) 这一句,作用是将a数组的地址 整个的向后移动一个,不是a[0]//切记,然后将这个a[5]的值赋值给他 printf("%d--%d--%d",*((&a[0]+1)),*(&a+1),*(ptr-1));}
运行结果
*((&a[0]+1)),a和,*(&a+1),是完全不同的两个概念,其中&a[0]和a是两个相同的概念--都能用来表示数组a 的第一个元素的首地址
#include <stdio.h>int main(void){int a[5]={1,2,3,4,5};//a,&a,(&a+1),(a+1);printf("%#0x--%#0x---%#0x---%#0x---%#0x",a,&a,(&a[0]),(a+1),(&a+1));}
像是这样的几个,其中a,(&a[0])这两个是数组首元素的地址,&a是整个数组的地址,(a+1)是数组第二个元素的地址,(&a+1)这个是整个数组的地址的下一个单元的地址
下面是输出
- 关于数组的&a[0]和&a及指针访问的问题
- 关于数组a[3] 和3[a]的问题
- 关于数组的a和&a的区别:一个是普通的指针,一个是数组的指针
- 数组和指针的区别(a和&a以及&a[0]的区别)
- 数组和指针的区别(a和&a以及&a[0]的区别)
- 给出a的定义 -- 指针 和 数组
- 多维数组a[x][y]的指针操作及ptr+1 a+1和&a+1区别
- 7、数组1---(定义、a,&a,&a[0]区别、以指针形式访问和以下标形式访问)(
- 数组a[],a和&a的区别
- char a[]和char *a的比较,数组名,数组首地址,a,&a,&a[0]
- char a[]和char *a的比较,数组名,数组首地址,a,&a,&a[0]
- char a[]和char *a的比较,数组名,数组首地址,a,&a,&a[0]
- 数组中 &a和 &a[0],a 的区别
- 数组中 &a和 &a[0],a 的区别
- 关于用指针方式访问二维数组的问题
- 指针加减操作,当a为数组时a和&a的区别
- 关于二维数组名和指针的指针的问题
- a++和++a的问题
- 用变换的思维写程序
- 构造函数
- 我的简历
- 模板用于解耦
- 一句话asp木马加密版 彻底突破杀毒软件
- 关于数组的&a[0]和&a及指针访问的问题
- centos 6.0 I like it~
- 将MYSQL读写权限转化为system权限
- 硬件负载均衡设备介绍
- 图片服务器的url hash架构
- 搜索引擎中的URL散列
- 到底什么是hash?它起什么作用?
- SVN权限设置说明
- sed指令助记表