目录
一、数组名与向量名区别
- 数组名:代表数组的第一个元素的首地址
- 向量名:代表这个容器的名字,&向量名表示这个容器的首地址
二、“数组名” 与 “&数组名” 的区别
- 数组名:数组的首地址
- 数组名+1:数组的下一个元素的地址(也就是第二个元素的地址),一次移动一个元素
- &数组名:整个数组的地址
- &数组名+1:整个数组的下一个地址,一次移动一个数组
#include<stdio.h>
int main()
{
int a[5] = {1,2,3,4,5};
printf("a = %p\n",a); // 数组名代表首地址 000000000064FE30
printf("&a = %p\n",&a); // "&a"代表数组的地址 000000000064FE30
printf("a+1 = %p\n",a+1); // 数组名代表首地址 000000000064FE34
printf("&a+1 = %p\n",&a+1); // "&a"代表数组的地址 000000000064FE44
return 0;
}
"000000000064FE34" - "000000000064FE30" = 4(转换为十进制也是4)
(因为int型的数组一个变量占4个字节) .
"000000000064FE30" - "000000000064FE44" = 14
(转换为十进制是20), (因为int型数组中有 5 个元素, 一个元素占 4 个字节) .
三、输出数组名
1、char类型
cout 对于 char[] 类型重载了<<运算符;
如果C++输出的数组是char类型的,那么输出的就是数组中的元素。
2、其他类型
如果使用的是其他类型的数组作为输出的话,那么就是一个16进制的地址。