数据类型的本质:固定大小内存块的别名
例如程序:
#include <stdio.h>
void main()
{
int arr1; //告诉c编译器分配4个字节的内存
int arr2[10]; //告诉c编译器分配40个字节的内存
printf("arr2:%d, arr2+1:%d, &arr2:%d, &b+1:%d\n", arr2, arr2+1, &arr2, &arr2+1);
}
结果:
[zhoupiaolong@izwz9fc5w5h9np2pxycrufz prog]$ vim test.c
[zhoupiaolong@izwz9fc5w5h9np2pxycrufz prog]$ gcc test.c -o test
[zhoupiaolong@izwz9fc5w5h9np2pxycrufz prog]$ ./test
arr2:1286344368, arr2+1:1286344372, &arr2:1286344368, &b+1:1286344408
[zhoupiaolong@izwz9fc5w5h9np2pxycrufz prog]$
arr2+1 、&arr2+1 结果不一样究其原因是因为arr2和&arr2的数据类型不一样
arr2代表的是数组首元素的地址(arr2[0])
&arr2代表的是整个数组的首地址(arr2[9])