Мои друзья и я играли с языком C ++. При этом мы столкнулись с чем-то, чего не могли понять.
Вот код:
#include <vector>
#include <iostream>
void print(std::vector<char> const &input)
{
std::cout << input.size();
for (int i = 0; i < input.size(); i++)
{
std::cout << input.at(i) << " - ";
}
}
int main()
{
char cha = 'A';
char chb = 'B';
char * pcha = &cha;
char * pchb = &chb;
try
{
std::vector<char> a = {pcha, pchb};
//std::vector<char> a = {pchb, pcha};
print(a);
}
catch(std::exception e)
{
std::cout << e.what();
}
}
Вывод этого кода:
A
Когда я закомментирую эту первую строку, попробуйте блок и раскомментируем вторую строку, что приводит к следующему:
try
{
// std::vector<char> a = {pcha, pchb};
std::vector<char> a = {pchb, pcha};
print(a);
}
Вывод становится:
std: исключение
Я подумал, что, возможно, это происходит из-за различных отступов и выравниваний объявленных переменных (char, char *), но до сих пор не понял. Вы можете найти код здесь , чтобы поиграть. Заранее спасибо.