宝玛科技网
您的当前位置:首页浅谈数组与指针的区别

浅谈数组与指针的区别

来源:宝玛科技网

区别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中可以看出在本机器上指针占据了2byte

	return 0;
}
output:

0x7ffea251f650
0x7ffea251f650
0x7ffea251f6

0x16af010
0x7ffea251f8
0x7ffea251f650


待续。。。

因篇幅问题不能全部显示,请点此查看更多更全内容