Добрый день.
Если прочитать про вопрос здесь (внизу) http://en.cppreference.com/w/cpp/language/reinterpret_cast, то такой код не должен выводить нули:
//1.cpp
#include <iostream>
using namespace std;
void f(short int *s);
int main()
{
int y = 0;
for(int i = 0; i < 10; ++ i)
{
y = i;
f((short int*)&y);
cout << y << '\n';
}
}
//2.cpp
void f(short int *s)
{
s[0] = 0;
s[1] = 0;
}
pavlick@pc:~$ g++ 1.cpp 2.cpp -std=c++14 -Wall -O3
pavlick@pc:~$ ./a.out
0
0
0
0
0
0
0
0
0
0
void* memcpy( void* dest, const void* src, std::size_t count );