Demo entry 6718749

will

   

Submitted by anonymous on Mar 06, 2018 at 12:40
Language: C++. Code size: 898 Bytes.

static void strlen_test()
{
    // 数组
    // 不会识别该数组真实长度,计算数组首元素到第一个'\0'的距离
    char arr[15] = "test string";
    print_mem(arr, "arr", arrlen(arr));
    print("strlen(arr)", strlen(arr)); // strlen(arr)为11

    // 注意和sizeof的区别
    // sizeof返回数组的真实大小,和存储的元素数值无关
    print("sizeof(arr)", sizeof(arr)); // sizeof(arr)为15
    
    // 指针
    // 计算从指针所指位置起到遇到的第一个'\0'的距离
    // 中文字符,UTF-8编码中,一个中文3个字节
    const char *chi_str = "测试字符";
    print("strlen(chi_str)", strlen(chi_str)); // strlen(chi_str)为12
    // 和sizeof的区别
    // sizeof一个指针,返回该指针的大小,64位系统中,指针大小为8
    print("sizeof(chi_str)", sizeof(chi_str));

    // 野指针
    // 并不会识别地址是否有效,该结果是不可预估的,仍会计算该指针位置到第一个'\0'的距离
    char* w_ptr = (char*)get_wild_ptr();
    print("strlen(w_ptr)", strlen(w_ptr)); 

    // 空指针
    // 程序会crash,操作是非法的
    // strlen(NULL); // 错误

    // 错误示范:
    // strlen不知道数组实际长度,直到第一个空字符才停止

}

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).