数组元素首地址和数组首地址

    科技2024-12-28  18

    int main() { int arr[10] = {0}; printf("数组元素首地址 :%d\n",arr); //数组元素首地址 2293280 printf("数组首地址 :%d\n",&arr); //数组首地址 2293280 printf("数组元素首地址+1 :%d\n",arr+1); //数组元素首地址 2293284 printf("数组首地址+1 :%d\n",&arr+1); //数组首地址 2293320 return 0; }

    arr、arr[0]、&arr[0]和&arr区别

    arr:数组名,同时也表示数组第一个元素的首字节地址,是一个常量值。arr[0]:数组一个元素,可以进行读写操作。&arr[0]:等价于arr,是一个地址常量,只能作为右值。&arr:数组首地址,其值与arr想等,但含义完全不同。&arr,是将整个数组作为一个新的数组类型,&arr就是这个类型对应内存空间的首地址。

    所以,上述代码中,arr和&arr输出都为2293280,但是arr+1 输出为2293284,即在2293280基础上增加了4个字节(1×sizeof(int))。&arr+1输出为2293320,在2293280基础上增加了40个字节(10×sizeof(int))。

    Processed: 0.009, SQL: 8