如何在C ++中使用asterix访问常量char *数组?

时间:2018-01-21 02:34:20

标签: c++ arrays pointers

    char* strings_array[100];

    strings_array[0] = (char*)"anisha";
    strings_array[1] = (char*)"kaul";
    strings_array[2] = (char*)"shizuka";
    strings_array[3] = (char*)"sharma";


    // Access the first character of 3rd string.
    std::cout << "\n" << *strings_array[2];

    // Access the second character of 3rd string.
    std::cout << "\n" << strings_array[2][1];

当我访问第一个字符时,使用asterix访问第3个字符串的剩余字符的方法是什么?

std::cout << "\n" << *strings_array[2];

2 个答案:

答案 0 :(得分:2)

要在没有[]的情况下访问数组中的元素(通过指针),可以递增指针然后取消引用它。

// these are equivalent
strings_array[2][1];
*(strings_array[2] + 1);

答案 1 :(得分:1)

不要抛弃constness!添加const

char const * strings_array[100];
     ^^^^^

任何修改这些字符串的尝试都将导致未定义的行为。

访问时间:

std::cout << strings_array[index_string][index_character];
// equivalent to:
std::cout << *(strings_array[index_string] + index_character);

为第一个字符(index_character = 0)提供(*)

std::cout << *strings_array[index_string]);

(*) []的{​​{3}}高于*