现在的位置: 首页 > 综合 > 正文

c++指针和数组

2012年11月21日 ⁄ 综合 ⁄ 共 404字 ⁄ 字号 评论关闭

之前应该也写过类似的博客,今天又碰到类似的题目,又做错了,看来当时就没有透彻明白。

	int a[10] = {0};  
	int (*b)[10] = &a;   
	int** c = reinterpret_cast<int**>(&a);  
	std::cout << a << std::endl<<&a<<endl<<&a[0]<<endl;  
	std::cout << c << std::endl;  
	std::cout << b << std::endl;  
	std::cout << **b << std::endl;  

output:

0024FEC8

0024FEC8

0024FEC8

0024FEC8

0024FEC8
0

为什么a的值和&a的值是一样的呢?

首先a表示数组第一个元素的地址,也就是这个数组的起始地址。

a是一个数组,&a表示这个数组的地址,也就是数组的起始地址。

虽然a和&a的值一样的,但是表示的意义不一样,a+1表示这个数组第二个元素的地址,而&a+1表示下个数组的地址

抱歉!评论已关闭.