即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

strlen的运用

编程语言 nuyexiaoxiang 10℃ 0评论

sterlen: 作用求取字符串长度,从内存某个位置开始扫描,直到‘\0’停止,不包含‘\0’.

char arr[] = “abcdef”;

    printf("%d\n", strlen(arr));// 6 arr代表首元素地址,从'a'开始到'\0'
    printf("%d\n", strlen(arr+0));// 6 arr+0代表首元素地址
    printf("%d\n", strlen(*arr));// err 崩溃 *arr 解引用到a,不知从何开始找起,程序崩溃
    printf("%d\n", strlen(arr[1]));//err 崩溃 原因同上
    printf("%d\n", strlen(&arr));// 6 &arr取到整个元素地址,与首元素地址相同
    printf("%d\n", strlen(&arr + 1));//x 随机值  &arr+1取到数组下面的地址,不知道何时遇到'\0'
    printf("%d\n", strlen(&arr[0]+1));// 5 取到数组第二个元素的地址
    char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };//arr中不包含字符'\0'
    printf("%d\n", strlen(arr));//x 随机值 不知何时有\0停止
    printf("%d\n", strlen(arr + 0));//x 同上
    printf("%d\n", strlen(*arr));//err *arr 解引用到a,不知从何开始找起,程序崩溃
    printf("%d\n", strlen(arr[1]));//err同上
    printf("%d\n", strlen(&arr));//x 
    printf("%d\n", strlen(&arr + 1));//x 
    printf("%d\n", strlen(&arr[0] + 1));//x 
    char *p = "abcdef";//p代表数组的首元素地址
    printf("%d\n", strlen(p));//6 整个字符串长度 不包括\0
    printf("%d\n", strlen(p + 1));//5 第二个元素开始字符串长度
    printf("%d\n", strlen(*p));//err *p是一个具体的值 系统崩溃
    printf("%d\n", strlen(p[0]));//err 同上
    printf("%d\n", strlen(&p));//x 随机值 p的地址(用二级指针来存放p的地址,也就是地址的地址)之后不知何时遇到\0停止
    printf("%d\n", strlen(&p + 1));//x p地址之后的空间不知何时遇到\0停止
    printf("%d\n", strlen(&p[0] + 1));//5 第二个元素开始字符串长度

备注


strlen 的使用是接受一个地址,然后开始扫描,直到遇到’\0’.

转载请注明:CodingBlog » strlen的运用

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情