• 華為C/C++筆試題系列二

    時間:2022-07-11 14:49:33 筆試 我要投稿
    • 相關推薦

    華為C/C++筆試題系列二

    華為筆試題;C;C++;

    華為C/C++筆試題系列二

    1.說出下面這個程序的運行結果,并簡要敘述其理由:

    char buf1[10]="hello";

    char buf2[10]="hello";

    if (buf1==buf2)

    printf("equal!");

    else printf("not equal!");

    答:因為buf1,buf2分配了不同的內存塊,而比較的是數組名,實際上是兩個分別指向數組起始元素地址的指針。

    2.指出下面這段程序中存在一些什么問題:

    int loop,a[5];

    int* p=a;

    for (loop=0;loop<5;loop++)< p="">

    { p++;

    *p=loop;

    }

    答:數組a[5]在創建時沒有初始化, 在for循環里也沒有起到完全初始化數組的作用,而且對一塊未知內存賦值。在最后一輪循環結束時p指向了數組a[5]的最后一個元素的下一個地址。

    string 系列

    char * strcpy( char *strDest, const char *strSrc )

    {

    assert( (strDest != NULL) && (strSrc != NULL) );

    char *address = strDest;

    while( (*strDest++ = * strSrc++) != ‘\0’ );

    return address;

    }

    char* strncpy(char* strdest, const char* strsrc, int n)

    {

    assert((strdest != NULL) && (strsrc != NULL));

    char* address = strdest;

    while(n-- > 0)

    *strdest++ = *strsrc++;

    return address;

    }

    int strcmp(const char* str1, const char* str2)

    {

    assert((str1 != NULL) && (str2 != NULL);

    int ret = 0;

    while (!(ret = (unsigned char*)*str1 - (unsigned char*)*str2) && (*str2))

    {

    str1++;

    str2++;

    }

    if (ret > 0)

    ret = 1;

    else if (ret < 0)

    ret = -1;

    return ret;

    }

    int strlen(const char* str)

    {

    assert(str != NULL);

    int len = 0;

    while (\黄频国产免费高清视频_富二代精品短视频在线_免费一级无码婬片aa_精品9E精品视频在线观看