Nit*_*arg 5 c++ arrays pointers memory-management dynamic-memory-allocation
这些可能是在c ++中声明数组(并为它们分配内存)的两种方法中的两种
1. int a[3];
2. int *b = new int[3];
Run Code Online (Sandbox Code Playgroud)
我想了解c ++如何以不同的方式处理这两者.
一个.在这两种情况下,我都可以使用以下语法访问数组:a[1]和b[1]
湾 当我尝试cout<< a和cout<< b,都打印相应数组的第一个元素的地址.
它看起来好像a和b都被视为指向数组的第一个元素的指针.
C.但奇怪的是,当我尝试这样做时cout << sizeof(a),sizeof(b)他们分别打印出不同的值 - 分别为4和12.
我不明白为什么在这种情况下sizeof(b),正在打印整个数组的大小.
a是一个数组(类型int [3])
b是一个指针(类型int*)
在C++中,它们是完全不同的东西.
该sizeof阵列是倍的每个元件的尺寸元件的数量.
该sizeof指针是独立的阵列(通常是4或8个字节)的大小的.
数组和指针的唯一共同点是数组在几种情况下经常"衰减"到指针.当你打印出它们的价值时,就会发生这种情况.