【笔试常考】C语言:深度剖析strlen,sizeof

原创 2016年05月30日 17:16:53

    在之前的博客中,我也探索过strlen,sizeof区别,详情可见博客http://10740184.blog.51cto.com/10730184/1705820


    关于strlen,sizeof均可求字符串长度,这两者是笔试面试常考的知识点


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//void Test1()
//{
//    char* arr = "hello world!";
//    int len1 = sizeof(arr);    //4,地址的大小均为4字节
//    int len2 = strlen(arr);    //12,找到‘\0’,共12字节
//    printf("sizeof:%d\n", len1);
//    printf("strlen:%d\n", len2);
//}

//void Test2()
//{
//    char arr[20] = "hello world!";
//    int len1 = sizeof(arr);    //-->20只看类型大小
//    int len2 = strlen(arr);    //12,找到‘\0’,没有'\0'长度
//    printf("sizeof:%d\n", len1);
//    printf("strlen:%d\n", len2);
//}

//void Test3()
//{
//    char arr[] = "hello world!";
//    int len1 = sizeof(arr);    //13,有‘\0’长度
//    int len2 = strlen(arr);    //12,找到'\0',无‘\0’长度
//    printf("sizeof:%d\n", len1);
//    printf("strlen:%d\n", len2);
//}

//void Test4()
//{
//    char arr[] = { 'h', 'e', 'l', 'l', 'o' };
//    int len1 = sizeof(arr);    //5,自己判断出长度,无'\0'长度
//    int len2 = strlen(arr);    //随机值,找不到'\0'
//    printf("sizeof:%d\n", len1);
//    printf("strlen:%d\n", len2);
//}

void Test5()
{
    char arr[10] ;
    int len1 = sizeof(arr);    //10,自己判断出长度,无'\0'长度
    int len2 = strlen(arr);    //随机值,找不到'\0'
    printf("sizeof:%d\n", len1);
    printf("strlen:%d\n", len2);
}
int main()
{
    /*Test1();*/
    /*Test2();*/
    /*Test3();*/
    /*Test4();*/
    Test5();

    system("pause");
    return 0;
}


本文出自 “Han Jing's Blog” 博客,请务必保留此出处http://10740184.blog.51cto.com/10730184/1740461

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C语言链表在笔试面试中常考问题总结

1、实现单链表逆置    无头结点: 1 #include  2 #include  3   4 typedef struct node{  5   ...

11.读c语言深度剖析 -- auto register static sizeof signed、unsigned

.1,最宽恒大量的关键字----auto auto:你就当它不存在吧。编译器在默认的缺省情况下,所有变量都是auto的。   1.2,最快的关键字---- register register:...

C语言中sizeof与strlen区别

本文转载自:http://www.2cto.com/kf/201109/105100.html1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写"abc",那么编译器...

C语言的sizeof和strlen

strlen是函数,而sizeof是算符。strlen需要进行一次函数调用,而对于sizeof而言,因为缓冲区已经用已知字符串进行了初始化,起长度是固定的,所以sizeof在编译时计算缓冲区的长度。 ...

c语言之sizeof 与 strlen理解

直接给出如下程序进行操作理解 int _tmain(int argc, _TCHAR* argv[]){ //定义了一个指向char类型的指针变量str1,在栈中分配一个内存给str1,把全局区...

C语言:strlen与sizeof的区别

1.sizeof是算符,strlen是函数。2.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。3...

c语言中的数组sizeof和strlen

sizeof   strlen sizeof():  返回一个对象或者类型所占的内存字节数。 strlen():  用来计算字符串的长度,遇到"\0"结束。 我们分别从一维数组,字符数组,二维数组...

[C语言]字符串sizeof, strlen详解

1. 字符串: 字符串有两种:C 类型的以及C++ 类型的 1.1. C 类型字符串 C类型的其实就是char *或者char[]类型。 1.1.1. char *类型字符串 有以下定义形式...

c语言006-sizeof/strlen的使用和区别

sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。语法 sizeof有三种语法形式,如下: sizeof(object);//si...

【C语言天天练(五)】strlen和sizeof

sizeof与strlen的区别
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)