关于数组的&a[0]和&a及指针访问的问题
2011-07-11 01:15
447 查看
#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)这个是整个数组的地址的下一个单元的地址
下面是输出
相关文章推荐
- 关于字符串 字符数组 字符型指针的问题
- 关于数组和指针作为参数时遇到的问题
- 一个关于"int型二维数组"及"指针数组"作函参的地址传递和带回返回值的问题,指针的拓展练习〈二〉
- 关于数组做函数形参和指针做函数形参的问题
- 关于数组与指针的一个小问题
- 关于 将一个数组赋值给另外一个数组会重置原来数组的指针 的问题
- 关于数组给指针赋值的问题
- C语言---关于char型数组和char型指针的问题
- 关于MFC CFileDlg使用,析构时访问空指针崩溃问题的解决办法
- 关于空指针类型的类变量的成员函数访问的问题
- 关于C语言字符数组、字符串和指针的相关问题
- 关于数组与指针的输出问题
- 关于json对象和数组的访问的一些问题
- 关于指针数组、数组指针、指针函数、函数指针等的问题
- 关于用指针方式访问二维数组的问题
- 关于字符指针和字符数组初始化的问题
- 关于数组指针,指针数组和字符串数组的一些问题
- 关于数据类型与指针的小笔记--初始化问题&&数组
- 关于函数字符数组调用的问题(没有搞清指针的概念)
- 小小的C语言问题指针数组赋值----关于指针和数组。