指针和数组的关系
//数组可以存放多个元素,指针指向的是其中一个元素的地址,存放的是地址
int main()
{
	int arr[10] = { 0 };
	int* p = arr;
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%p ----- %p\n", p + i, &arr[i]);
	}//&arr[i] 与 p+i 地址是相同的,可以用指针直接访问数组
	return 0;
}
int main()
{
	int arr[10] = { 0 };
	printf("%p\n", arr); //00000064bdeffb78 首元素的地址
	printf("%p\n", arr+1); //00000064bdeffb7c +1 地址+4个字节
	printf("%p\n", &arr[0]);//00000064bdeffb78
	printf("%p\n", &arr[0]+1);//00000064bdeffb7c +1 地址+4个字节
	printf("%p\n", &arr);//00000064bdeffb78
	printf("%p\n", &arr+1);//00000064bdeffba0  +1 地址+ 40个字节(整个数组)
	//00000064bdeffba0 - 00000064bdeffb78 = a0 - 78(16进制) = 28(16进制)
	//28(16进制)换算十进制 2乘16的1次方  + 8乘16的0次方 = 40
	//&arr - &数组名 - 数组名不是首元素的地址-数组名表示整个数组
	//sizeof(arr) - sizeof(数组名) - 数组名表示整个数组,计算的是整个数组的大小
	return 0;
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号