关于数组长度问题你都全都掌握了吗?数组求长度练习题就在这里

关于一维数组你是否已经掌握了呢,对sizeof()函数和strlen()函数的应用是否了如指掌了呢?就用这个试题来检测一下自己的实力吧。后面加了一点点求指针长度的练习。
不太了解数组的同学可以浏览我的另一篇博客:这里写链接内容

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
    int a = 0;
    int arr[10];
    int arr1[] = { 1,2,3,4 };
    char arr2[] = { 'a','b','c','d','e','f' };
    char arr3[] = "abcdef";
    char *p = "abcdef";
    //初阶  数组:int a = 0;     int arr[10];
    printf("初阶: ");
    printf("%d ", sizeof(a));//对int型变量a的大小--4
    printf("%d\n", sizeof(arr));//求int型数组arr的大小--40

    //进阶:整型数组求大小   数组:int arr1[] = { 1,2,3,4 };
    printf("进阶:整型数组求大小结果: ");
    printf("%d  ", sizeof(arr1));//求数组arr1的大小--16
    printf("%d ", sizeof(arr1 + 0));//求arr1首元素地址的大小--4
    printf("%d ", sizeof(*arr1));//求数组arr1首元素大小--4
    printf("%d ", sizeof(arr1 + 1));//求数组arr1第二个元素地址大小--4
    printf("%d ", sizeof(arr1[1]));//求数组arr1第二个元素大小--4
    printf("%d ", sizeof(&arr1));//求数组arr1地址的大小--4
    printf("%d ", sizeof(*&arr1));//求数组arr1的大小--16
    printf("%d ", sizeof(&arr1 + 1));//求下一个数组的地址--4
    printf("%d ", sizeof(&arr1[0]));//求首元素地址的大小--4
    printf("%d\n", sizeof(&arr1[0] + 1));//求第二个元素的地址大小--4

    //进阶:求字符数组大小(sizeof()) 数组:char arr2[] = { 'a','b','c','d','e','f' };
    printf("进阶:求字符数组大小结果:  ");
    printf("%d ", sizeof(arr2));//求数组的大小--6
    printf("%d ", sizeof(arr2 + 0));//求首元素地址的大小--4
    printf("%d ", sizeof(*arr2));//求数组首元素大小--1
    printf("%d ", sizeof(arr2 + 1));//求数组arr1第二个元素地址大小--4
    printf("%d ", sizeof(arr2[1]));//求数组第二个元素大小--1
    printf("%d ", sizeof(&arr2));//求数组地址的大小--4
    printf("%d ", sizeof(*&arr2));//求数组的大小--6  
    printf("%d ", sizeof(&arr2 + 1));//求下一个数组的地址--4   
    printf("%d ", sizeof(&arr2[0]));//求首元素地址的大小--4
    printf("%d\n", sizeof(&arr2[0] + 1));//求第二个元素的地址大小--4

    //进阶:求字符串数组大小   数组:char arr3[] = "abcdef";
    printf("进阶:求字符串数组大小结果: ");
    printf("%d ", sizeof(arr3));//求数组的大小--7
    printf("%d ", sizeof(arr3 + 0));//求首元素地址的大小--4
    printf("%d ", sizeof(*arr3));//求数组首元素大小--1
    printf("%d ", sizeof(arr3 + 1));//求数组arr1第二个元素地址大小--4
    printf("%d ", sizeof(arr3[1]));//求数组第二个元素大小--1
    printf("%d ", sizeof(&arr3));//求数组地址的大小--4
    printf("%d ", sizeof(*&arr3));//求数组的大小--7
    printf("%d ", sizeof(&arr3 + 1));//求下一个数组的地址--4   
    printf("%d ", sizeof(&arr3[0]));//求首元素地址的大小--4
    printf("%d\n", sizeof(&arr3[0] + 1));//求第二个元素的地址大小--4


    //中阶:求字符数组长度(strlen(),传入变量地址,求字符串长度,遇到'\0'结束)
                                //数组:char arr2[] = { 'a','b','c','d','e','f' };
    printf("中阶:求字符数组长度结果:  ");
    printf("%d ", strlen(arr2));//求数组的长度--随机值
    printf("%d ", strlen(arr2 + 0));//从首元素地址开始求数组长度--随机值
    //printf("%d ", strlen(*arr2));//传入数组下标为0的值,格式错误,error  
    printf("%d ", strlen(arr2 + 1));//从第二个元素地址开始,随机值
    //printf("%d ", strlen(arr2[1]));//传入变量值,格式错误,error
    printf("%d ", strlen(&arr2));//求数组长度--随机值
    //printf("%d ", strlen(*&arr2));//传参格式错误--error
    printf("%d ", strlen(&arr2 + 1));//求下一个数组长度--随机值
    printf("%d ", strlen(&arr2[0]));//从首元素开始求数组长度--随机值
    printf("%d\n", strlen(&arr2[0] + 1));//从第二个元素开始求数组长度--随机值

    //中阶:求字符串数组长度   数组:char arr3[] = "abcdef";
    printf("中阶:求字符串数组长度结果: ");
    printf("%d ", strlen(arr3));//求数组的长度--6
    printf("%d ", strlen(arr3 + 0));//从首元素地址开始求数组长度--6
    //printf("%d ", strlen(*arr3));//传入数组下标为0的值,格式错误,error  
    printf("%d ", strlen(arr3 + 1));//从第二个元素地址开始,5
    //printf("%d ", strlen(arr3[1]));//传入变量值,格式错误,error
    printf("%d ", strlen(&arr3));//求数组长度--6
    //printf("%d ", strlen(*&arr3));//传参格式错误--error
    printf("%d ", strlen(&arr3 + 1));//求下一个数组长度--随机值
    printf("%d ", strlen(&arr3[0]));//从首元素开始求数组长度--6
    printf("%d\n", strlen(&arr3[0] + 1));//从第二个元素开始求数组长度--5

    //高阶:对指针赋值求长  数组;char *p = "abcdef";
    printf("高阶:对指针赋值求长结果:  ");
    printf("%d ", sizeof(p));//对指针变量求大小--4
    printf("%d ", sizeof(p+1));//第二个元素地址大小--4
    printf("%d ", sizeof(*p));//首元素大小--1
    printf("%d ", sizeof(p[0]));//首元素大小--1
    printf("%d ", sizeof(&p));//指针p地址的大小--4
    printf("%d ", sizeof(&p+1));//p地址后变量所占空间地址大小--4
    printf("%d ", sizeof(&p[0]+1));//第二个元素地址大小--4
    printf("%d ", strlen(p));//对指针变量求长度--6
    printf("%d ", strlen(p + 1));//从第二个元素开始求长度--5
    //printf("%d ", strlen(*p));//传参错误--error
    //printf("%d ", strlen(p[0]));//传参错误--error
    printf("%d\n", strlen(&p));//从p的地址开始求长度--随机值


    printf("END! \n");
    return 0;
}

结果:
这里写图片描述

PS:评论区欢迎大家留言,点赞,打赏,丢香蕉给我,谢谢……..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值