更多“sizeof是库函数吗?sizeof 和 strlen 的区别?”相关问题
  • 第1题:

    ● 已知有变量 data1 定义如下:

    union data

    { int i;

    char ch;

    float f;

    } data1;

    则变量 data1 所占的内存存储空间可表示为 (57) 。

    (57)

    A. sizeof(int)

    B. sizeof(char)

    C. sizeof(float)

    D. sizeof(int)+sizeof(char)+sizeof(float)


    正确答案:C


  • 第2题:

    在C++中,下列程序段的输出结果是【 】。

    int x, a[10];

    cout<<sizeof(x)<<“”<<sizeof(a)<<“”<<sizeof(float)<<end1


    正确答案:4 40 4
    4 40 4

  • 第3题:

    执行下列语句后,输出结果为steven的是

    char*str="steven";

    eout.write(str, );

    A.strlen(str)

    B.sizeof(str)

    C.strlen(str+1)

    D.sizeof(str-1)


    正确答案:A
    解析:本题考察在C++中,字符串的存放方式,以及不同的字符串函数的作用。其中,strlen是专门用于求字符串长度的,其自动去掉字符数组后面的那个‘\0’,而sizeof后面求的则是str指针,指针在目前的32位机器中是固定大小的,其值与字符串的长度是没有关系的。故可以排除B和D。而选项C则将‘\0’多考虑了一次。

  • 第4题:

    若有运算符:>、一、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为( )。

    A. %、sizeof、>、<<、=

    B.sizeof、%、>、=、<<

    C.sizeof、<<、>、%、=

    D.sizeof、%、<<、>、=


    正确答案:D
    主要考查运算符的优先级。sizeof的优先级最高,其次是%<<>.优先级最低的是“=”。

  • 第5题:

    WIN32 平台下,sizeof(short) = ____,sizeof(int) = ____,sizeof(long) = ____。


    正确答案:

     

  • 第6题:

    char str[ ]= "Hello";

    char *p=str;

    int n=10;

    sizeof(str)=( )

    sizeof(p)=( )

    sizeof(n)=( )

    void func(char str[100])

    { }

    sizeof(str)=( )


    正确答案:
     

  • 第7题:

    在下列基类的定义中,有无virtual修饰use成员函数的结果将不同,其原因是______。

    当use( )为虚拟函数时的程序执行结果:

    sizeof(A)=8

    sized(B)=12

    sizeof(C)=16

    当use( )非虚拟函数时的程序执行结果:

    sizeof(A)=4

    sized(B)=8

    sizeof(C)=12

    源程序如下:

    include<iostream.h>

    class Grandad

    {

    public:

    Grandad( ):money(10){}

    int money;

    virtual void use( ){}

    };

    class Father:public Grandad

    {

    public:

    Father( ):money(100){}

    int money;

    void use( ){}

    };

    class Son:public Father

    {

    public:

    Son( ):money(300){}

    int money;

    void use( ){}

    };

    void main(void)

    {

    Grandad A;Father B;Son C;

    cout<<"sizeof(A)="<<sizeof(A)<<endl;

    cout<<"sizeof(B)="<<sizeof(B)<<endl;

    cout<<"sizeof(C)="<<sizeof(C)<<endl;

    }


    正确答案:采用虚函数的每个派生类都含有一个指向虚函数表的指针故多4字节。
    采用虚函数的每个派生类都含有一个指向虚函数表的指针,故多4字节。

  • 第8题:

    若有运算符:>、一、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为( )。

    A. %、sizeof、>、<<、=>、=、<<

    C.sizeof、<<、>、%、=

    D.sizeof、%、<<、>、=


    正确答案:D
    主要考查运算符的优先级。sizeof的优先级最高,其次是%<<>.优先级最低的是“=”。

  • 第9题:

    int id[sizeof(unsigned long)];这个对吗?为什么?


    正确答案:正确,这个sizeof是编译时运算符,编译时就确定了可以看成和机器有关的常量。

  • 第10题:

    单选题
    有如下类定义:横线处应填写的表达式是(  )。
    A

    new char[strlen(aa) + 1]

    B

    char[strlen(aa) + 1]

    C

    char[strlen(aa)]

    D

    new char[sizeof(a) - 1]


    正确答案: A
    解析:
    函数strlen(aa)返回字符串aa中字符的个数,不包括末尾的空字符。在内存空间创建字符数组a时,需要字符数组的长度是strlen(aa)+1。

  • 第11题:

    单选题
    有如下程序:#include #include main(){ char a[]=THIS, *b=OK; printf(%d,%d,%d,%d, strlen(a), sizeof(a), strlen(b), sizeof(b));}程序运行后的输出结果是(  )。
    A

    4,5,2,4

    B

    4,4,2,1

    C

    5,5,3,3

    D

    4,5,2,3


    正确答案: D
    解析:
    strlen函数统计字符串长度,遇到'\0'统计结束。sizeof用来获取类型或数据对象的长度,也即是一个这种数据类型的变量在内存中所占字节数。a数组'\0'之前有效字符有4个,由于字符串有效字符之后有一个'\0'也会被放入数组,char类型占一个字节,所以数组a所占字节数为1*5=5。b为指向字符串的指针,字符串长度为2,指针类型变量所占字节数为4。答案选择A选项。

  • 第12题:

    单选题
    有以下程序:#include #include main(){ char name[9]=c##line; char *str=name;  printf(%d,%d,%d,%d, sizeof(name), strlen(name), sizeof(str), strlen(str)); }程序运行后的输出结果是(  )。
    A

    9,7,4,7

    B

    8,6,9,6

    C

    8,6,3,6

    D

    10,8,5,8


    正确答案: D
    解析:
    由于name是一个长度为9的一维数组,故在内存中占用9字节长度,而其中字符串"c##line"只有7个字符,strlen函数返回的是该字符串的长度,不包含结束符,str是一个指针变量,占用4字节长度,但是由于name首地址赋给了str指针变量,在调用strlen函数时,返回的是指针对应地址单元的字符串的长度7,答案选择A选项。

  • 第13题:

    若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是

    A.sizeof,&=,<<,^

    B.sizeof,<<,^,&=

    C.^,<<,sizeof,&=

    D.<<,^,&=,sizeof


    正确答案:B

  • 第14题:

    以下程序的输出结果是______。 main() { char st[20]="hello\0\t\\"; printf("%d%d\n",strlen(st),sizeof(st)); }

    A.99

    B.520

    C.1320

    D.2020


    正确答案:B
    解析:C语言中字符串是以'\0'字符结束的,且strlen()函数计算的是'\0'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。

  • 第15题:

    下列程序在32位linux或unix中的结果是什么?

    func(char *str)

    {

    printf("%d",sizeof(str));

    printf("%d",strlen(str));

    }

    main()

    {

    char a[]="123456789";

    printf("%d",sizeof(a));

    func(a);

    }


    正确答案:

     

    10 4 9

  • 第16题:

    下列程序在32位linux或unix中的结果是什么?

    func(char *str)

    {

    printf(" %d",sizeof(str));

    printf(" %d",strlen(str));

    }

    main()

    {

    char a[]="123456789";

    printf(" %d",sizeof(a));

    printf(" %d",strlen(a));

    func(a);

    }


    正确答案:

     

    10 9 4 9

  • 第17题:

    请给出如下程序的结果

    char szTemp[1000] = "";

    int nLen1 = sizeof(szTemp);

    int nLen2 = strlen(szTemp);

    strcpy(szTemp, "abc");

    int nLen3 = sizeof(szTemp);

    int nLen4 = strlen(szTemp);

    int nTemp[100];

    int *pTemp = nTemp;

    int nLen5 = sizeof(pTemp);

    char szResult[200] = "";

    sprintf(szResult, "%d,%d,%d,%d,%02d.", nLen1, nLen2, nLen3, nLen4, nLen5);

    则szResult = ____。


    正确答案:
     

  • 第18题:

    若有运算符:>;、一、<;<;、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为( )。

    A.%、sizeof、>;、<;<;、=

    B.sizeof、%、>;、一、<;<;

    C.sizeof、<;<;、>;、%、=

    D.sizeof、%、<;<;、>;、=


    正确答案:D
    主要考查运算符的优先级。sizeof的优先级最高,其次是%<<、>,优先级最低的是“=”。

  • 第19题:

    以下为 Windows NT 下的 32位 C++程序,请计算 sizeof的值

    char str[] = “Hello” ; char *p = str ;int n = 10;请计算 sizeof (str )

    = sizeof ( p ) = sizeof ( n ) = void Func (

    char str[100]){请计算 sizeof( str ) = }

    void *p = malloc( 100 );请计算 sizeof ( p ) =


    正确答案:
     

  • 第20题:

    变量W_data定义如下:union data_node{float ff'int n;char ch;}W_data;则变量W_data所占的内存存储空间可表示为______。

    A.sizeof(int)
    B.sizeof(char)
    C.sizeof(float)
    D.sizeof(int)+sizeof(char)+sizeof(float)

    答案:C
    解析:
    本题考查C语言编程的基本知识。本题中变量W_data类型为联合。联合中所有数据项占有相同的内存空间。联合体所占的内存存储空间为所包含数据项所占的内存存储空间的最大值。

  • 第21题:

    sizeof()是C语言提供的标准库函数,用于测试数据类型在系统中所占的字节数。


    正确答案:错误

  • 第22题:

    问答题
    int id[sizeof(unsigned long)];这个对吗?为什么?

    正确答案: 正确,这个sizeof是编译时运算符,编译时就确定了可以看成和机器有关的常量。
    解析: 暂无解析

  • 第23题:

    问答题
    sizeof是库函数吗?sizeof 和 strlen 的区别?

    正确答案: sizeof 是一个操作符,strlen 是库函数。 
    sizeof的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘/ 0‘的字符串作参数。 
    编译器在编译时就计算出了 sizeof 的结果。而 strlen 函数必须在运行时才能计算出来。并且 sizeof计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。 
    数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。  
    注意:有些是操作符看起来像是函数,而有些函数名看起来又像操作符,这类容易混淆的名称一定要加以区分,否则遇到数组名这类特殊数据类型作参数时就很容易出错。最容易混淆为函数的操作符就是 sizeof。
    解析: 暂无解析