更多“定义字符指针char *str="hello",已知sizeof(str)=4,则strlen(str)=______。 ”相关问题
  • 第1题:

    以下为 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 ) =


    正确答案:
     

  • 第2题:

    执行下列语句后,输出结果为steven的是 Char * str="steven"; cout. 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’多考虑了一次。

  • 第3题:

    下列初始化字符数组的语句,正确的是()。

    A.char[] str = {'h', 'e', 'l', 'l', 'o'};

    B.char[5] str = "hello";

    C.char[5] str = {"hi"};

    D.char[100] str = "";


    A

  • 第4题:

    下面的程序各自独立,请问执行下面的四个TestMemory 函数各有什么样的结果?

    ①void GetMemory(char * p)

    {

    p = (char * )malloc(100);

    }

    void TestMemory (void)

    {

    char *str = NULL;

    GetMemory (str);

    strcpy(str, "hello world");

    prinff(str);

    }

    ② char * GetMemory (void)

    {

    char p[ ] = "hello world";

    return p;

    }

    void TestMemory (void)

    {

    char * str = NULL;

    str = GetMemory( );

    printf(str);

    }

    ③void GetMemory(char * * p, int num)

    {

    * p = (char * )malloc(num);

    }

    void TestMemory (void)

    {

    char * str = NULL;

    GetMemory(&str, 100);

    strcpy( str, "hello" );

    printf(sir);

    }

    ④void TestMemory (void)

    {

    char *str = (char * )malloe(100);

    strepy (str, "hello" );

    free ( str );

    if(str ! = NULL)

    {

    strepy( str, "world" );

    printf(str);

    }

    }


    正确答案:程序1程序崩溃。因为GetMemory并不能传递动态内存TestMemory函数中的str一直都是 NULL。strcpy(str “hello world”);将使程序崩溃。 程序2可能是乱码。因为GetMemory返回的是指向“栈内存”的指针该指针的地址不是 NULL但其原来的内容已经被清除新内容不可知。 程序3能够输出hello但是会发生内存泄漏。 程序4篡改动态内存区的内容后果难以预料非常危险。因为free(str);之后str成为野指针if(str!=NULL)语句不起作用。
    程序1程序崩溃。因为GetMemory并不能传递动态内存,TestMemory函数中的str一直都是 NULL。strcpy(str, “hello world”);将使程序崩溃。 程序2可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原来的内容已经被清除,新内容不可知。 程序3能够输出hello,但是会发生内存泄漏。 程序4篡改动态内存区的内容,后果难以预料,非常危险。因为free(str);之后,str成为野指针,if(str!=NULL)语句不起作用。

  • 第5题:

    库函数strcpy用以复制字符串。若有以下定义和语句: char str1[ ]="GREETING",str2[8],*str3,*str4="GREETING"; 则对库函数strcpy的不正确调用是 ()

    A.strcpy(str2,"HELLO2");

    B.strcpy(str3,"HELLO3");

    C.strcpy(str4,"HELLO4");

    D.都不正确


    B 解析:strcpy(字符数组1,字符串2)其作用是将字符串2复制到字符数组1中去。注: (1)字符数组1必须定义得足够大; (2)“字符数组1”必须写成数组名的形式; (3)复制时连同字符串后面的'\\0'一起复制到字符数组1中。