数组名和取地址数组名的区别

来源:互联网 发布:php记账系统源码 编辑:程序博客网 时间:2024/05/23 10:39
#include<stdio.h>int main(){int a1[5] = { 1, 2, 3, 4, 5 };int a2[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };//a1是首元素地址,+1步长是4字节;  &a1地址也是首元素的地址,但是+1步长是整个数组步长+1的步长20字节,int* p1 = (int*)(&a1 + 1);int* p2 = (int*)(&a2 + 1);printf("%d\n",*(a1+1));//2printf("%d\n", *(p1 - 1));//5 减去1就是最后一个元素printf("%d\n", *(int*)(a2 + 1));//4printf("%d\n", *(p2 - 1));//6getchar();return 0;}



总结:数组名和对数组取地址的区别就是步长不一样