У меня есть int*
:
int arr[4];
int *x = arr;
x[0] = 65;
x[1] = 66;
x[2] = 67;
x[3] = 0; // terminating null
Затем я хочу напечатать эти значения в виде символов:
char *y = magical_function(x);
printf(y);
Вывод должен быть ABC
. Как мне получить или определить эту магическую функцию?
Примечание: если мне довелось получить это: x[2] = 1000;
, тогда мне, честно говоря, все равно, что делает ответ. Он может игнорировать старшие биты, ошибки, что угодно, в данном случае это UB.
Это не работает:
char *y = (char*) x;
... поскольку выходные данные просто A
, вероятно, поскольку char*
интерпретирует int как 4 символа, а 2-й из этих символов является нулевым байтом, который завершает строку:
int arr[4];
int *x = arr;
// x points to the following memory:
x->01000000 (x[0])
00000000
00000000
00000000 (65)
-------- (x[1])
01000001
00000000
00000000
00000000 (66)
// if casted to a char*:
y->01000000 "A"
00000000 "\0"
00000000 "\0"
00000000 "\0" etc.