C语言数组
C语言中编译器不会为数组名分配内存,只会为数组中的每个元素分配内存(与指针的区别);对数组的访问可以通过指针或者下标的形式,但是不能直接对整个数组进行操作,也就是说数组名不能作为一个左值进行操作。下面对数组常见的几个问题进行代码示例。 数组的sizeof void array_size(int a[]) { printf("int a[10] as a parameter:\n"); printf("sizeof(a) = %d\n", sizeof(a)); int b[10]; printf("int b[10]:\n"); printf("sizeof(b) = %d\n", sizeof(b)); } 函数输出为: int a[10] as a parameter: sizeof(a) = 4 int b[10]: sizeof(b) = 40 sizeof(a) = 4 是因为数组作为函数参数会退化为指针类型,而sizeof(b) = 40则为数组b所占的内存空间大小。 2. 数组有关的地址问题 void array_addr() { int a[10]; printf("int a[10]:\n"); printf("&a = %p\n", &a); printf("a = %p\n", a); printf("&a[0] = %p\n", &a[0]); printf