浅谈数组与指针的区别

来源:互联网 发布:百川资讯数据 编辑:程序博客网 时间:2024/09/21 09:22

区别1:观察下面程序

#include <iostream>#include <stdio.h>using namespace std;int main(){int a[5] = {1, 2, 3, 4, 5};printf("%p\n", a);printf("%p\n", &a);//吃惊a == &a, &a是一个int (*)[5]类型的数组指针printf("%p\n", &a + 1);//重点理解,由于&a是一个指针长度为5的数组的指针,故&a+1移动5*sizeof(int)字节的大小int *p = (int *)(&a + 1);//猜测*(p-1)? 答案:5.指针++后地址移动的距离是根据指针的类型所决定的printf("\n");int *b = new int[5];printf("%p\n", b);printf("%p\n", &b);//此处与数组的区别printf("%p\n", (&b + 1));//从output中可以看出在本机器上指针占据了2bytereturn 0;}
output:

0x7ffea251f6500x7ffea251f6500x7ffea251f6640x16af0100x7ffea251f6480x7ffea251f650


待续。。。

0 0
原创粉丝点击