ArrayPractice

/******************************************************************************************************
 * @file name:		  : test01
 * @brief  		      :数组的练习
 * @author 		      :wvjnuhhail@126.com
 * @date 			  :2024/06/19
 * @version 1.0 	  :V1.0
 * @property 		  :暂无
 * @note   		      :None
 * CopyRight (c)  2023-2024   wvjnuhhail@126.com   All Right Reseverd
 ******************************************************************************************************/
// 假设在32bit系统下计算,32bit系统下的存储单元的编号是32bit的(4字节)

#include <stdio.h>

int main()
{
    int a[] = {1, 2, 3, 4}; // 一维数组

    printf("%d\n", sizeof(a)); // 16

    printf("%d\n", sizeof(a + 0)); // 4  a+0表示数组的第一个元素向后偏移0个元素,所以相当于数组的第一个元素的地址

    printf("%d\n", sizeof(*a)); // 4  *a ==> (a+0) 表示数组中第一个元素的地址  *(a+0) 可以得到第一个元素的值,元素是int型,所以sizeof(int) = 4

    printf("%d\n", sizeof(a + 1)); // 4  a+1表示数组的第一个元素向后偏移1个元素,所以相当于数组的第2个元素的地址

    printf("%d\n", sizeof(a[1])); // 4  a[1]表示第2个元素的值 元素是int型,所以sizeof(int) = 4

    printf("%d\n", sizeof(&a)); // 4  &a表示数组本身的地址

    printf("%d\n", sizeof(*&a)); // 16 *&可以互相抵消

    printf("%d\n", sizeof(&a + 1)); // 4  &a表示数组本身的地址,+1则表示从该地址向后偏移一个数组的大小

    printf("%d\n", sizeof(&a[0])); // 4  a[0]表示第一个元素的值,&a[0]表示第一个元素的地址

    printf("%d\n", sizeof(&a[0] + 1)); // 4  地址

    return 0;
}
/******************************************************************************************************
 * @file name:		  : test02
 * @brief  		      :数组的练习
 * @author 		      :wvjnuhhail@126.com
 * @date 			  :2024/06/19
 * @version 1.0 	  :V1.0
 * @property 		  :暂无
 * @note   		      :None
 * CopyRight (c)  2023-2024   wvjnuhhail@126.com   All Right Reseverd
 ******************************************************************************************************/
#include <stdio.h>

// 假设在64bit系统下计算,64bit系统下的存储单元的编号是64bit的(8字节)
int main()
{

    char arr[] = {'a', 'b', 'c', 'd', 'e', 'f'}; // 字符数组

    /* 1 */ printf("%d\n", sizeof(arr));         // 6
    /* 2 */ printf("%d\n", sizeof(arr + 0));     // 8
    /* 3 */ printf("%d\n", sizeof(*arr));        // 1
    /* 4 */ printf("%d\n", sizeof(arr[1]));      // 1
    /* 5 */ printf("%d\n", sizeof(&arr));        // 8
    /* 6 */ printf("%d\n", sizeof(&arr + 1));    // 8
    /* 7 */ printf("%d\n", sizeof(&arr[0] + 1)); // 8

    return 0;
}
/******************************************************************************************************
 * @file name:		  : test03
 * @brief  		      :数组的练习
 * @author 		      :wvjnuhhail@126.com
 * @date 			  :2024/06/19
 * @version 1.0 	  :V1.0
 * @property 		  :暂无
 * @note   		      :None
 * CopyRight (c)  2023-2024   wvjnuhhail@126.com   All Right Reseverd
 ******************************************************************************************************/
#include <stdio.h>

int main()
{
    char arr[] = "abcdef";

    /* 1 */ printf("%d\n", sizeof(arr));         // 7
    /* 2 */ printf("%d\n", sizeof(arr + 0));     // 8
    /* 3 */ printf("%d\n", sizeof(*arr));        // 1
    /* 4 */ printf("%d\n", sizeof(arr[1]));      // 1
    /* 5 */ printf("%d\n", sizeof(&arr));        // 8
    /* 6 */ printf("%d\n", sizeof(&arr + 1));    // 8
    /* 7 */ printf("%d\n", sizeof(&arr[0] + 1)); // 8

    return 0;
}
/******************************************************************************************************
 * @file name:		  : test04
 * @brief  		      :数组的练习
 * @author 		      :wvjnuhhail@126.com
 * @date 			  :2024/06/19
 * @version 1.0 	  :V1.0
 * @property 		  :暂无
 * @note   		      :None
 * CopyRight (c)  2023-2024   wvjnuhhail@126.com   All Right Reseverd
 ******************************************************************************************************/
#include <stdio.h>

// 64bit

int main()
{
    int a[3][4] = {0}; // 二维数组

    /* 1 */ printf("%d\n", sizeof(a));            // 48
    /* 2 */ printf("%d\n", sizeof(a[0][0]));      // 4
    /* 3 */ printf("%d\n", sizeof(a[0]));         // 16
    /* 4 */ printf("%d\n", sizeof(a[0] + 1));     // 8
    /* 5 */ printf("%d\n", sizeof(*(a[0] + 1)));  // 4
    /* 6 */ printf("%d\n", sizeof(a + 1));        // 8
    /* 7 */ printf("%d\n", sizeof(*(a + 1)));     // 16
    /* 8 */ printf("%d\n", sizeof(&a[0] + 1));    // 8
    /* 9 */ printf("%d\n", sizeof(*(&a[0] + 1))); // 16
    /* 10 */ printf("%d\n", sizeof(*a));          // 16
    /* 11 */ printf("%d\n", sizeof(a[3]));        // 16

    return 0;
}
posted @ 2024-06-20 08:49  WJnuHhail  阅读(1)  评论(0编辑  收藏  举报