考试 数组,指针变换易混淆

#define _CRT_SECURE_NO_WARNINGS 1
// 将数组作为参数传给函数
#include <stdio.h>
    //数组名是什么?
    //数组名是数组首元素的地址
    //但是又两个例外:
    //1.sizeof(arr) - 数组名表示整个数组 - 计算的是整个数组的大小,单位字节
    //2.&arr - 数组名表示整个数组 - 取出的是整个数组的地址
int main() {
    int arr[10] = { 0 };

    printf("%p\n", &arr); //000000E3728FF6F8,这个是整个数组的地址就是首元素的地址,虽然结果一样,意义不同
    printf("%p\n", arr); //000000E3728FF6F8
    printf("%p\n", &arr[0]); //000000E3728FF6F8

    printf("%p\n", &arr + 1); //00000081402FF7F0 ,,这个加的是40,整 个地址的首地址
    printf("%p\n", arr+1); //00000081402FF7CC  加4
    printf("%p\n", &arr[0] + 1); //00000081402FF7CC  ,加4

    int sz = sizeof(arr) / sizeof(arr[0]); //整个数组的个数
    printf("%d\n", sz);   //结果:10 ,数组的个数


    printf("%p\n", &arr[0]); //000000A21DBEF578
    printf("%p\n", &arr);  //000000A21DBEF578  

    return 0;
}
posted @ 2022-10-26 12:57  king光  阅读(24)  评论(0)    收藏  举报