#include <stdio.h>
unsigned short x = 1; /* 0x0001 */
int main(void)
{
printf("%s\n", *((unsigned char *) &x + 1) == 0 ? "little-endian" : "big-endian");
return 0;
}
При каком условии в цикле или функции будет конец файла?
int *aaa; //переменная с именем aaa типа "указатель на int", расположена в некоторой ячейке памяти, выделенной на стеке
aaa = new int(6); //присваиваем переменной aaa новое значение, а именно, адрес выделенной ячейки памяти в куче, содержащей значение 6
qInfo() << aaa; // 0x6a4e50 <- узнать тот самый адрес, что мы присвоили указателю
qInfo() << *aaa; // 6 <- перейти по этому адресу и извлечь значение
qInfo() << &aaa; // 0x28fbe8 <- адрес ячейки, где лежит значение самой переменной aaa
qInfo() << &*aaa; // 0x6a4e50 <- перешли по указателю, который лежит в aaa (ячейка в куче, содержащая значение 6), потом узнали адрес этой ячейки, и конечно это тот самый адрес, по которому мы перешли
qInfo() << *&aaa; // 0x6a4e50 <- узнали адрес ячейки стека, по которому расположена переменная aaa, потом перешли по нему и извлекли значение переменной aaa. то же самое, что и просто обратиться к aaa
qInfo() << *&*&*aaa; // 6 тож самое что и выше, все &* нивелируют друг друга (переход по адресу и опять получение того же самого адреса обратно), остаётся только *aaa, ну а там лежит 6
class samp {
public:
int a;
int b[0x100];
};
samp func() //Функция возвращающая локальный объект
{
samp ob2;
ob2.a=255;
for (int i = 0; i < 0x100; i++)
{
ob2.b[i] = i;
}
return ob2;
}
samp * func(samp * result_ptr)
{
samp ob2;
ob2.a=255;
for (int i = 0; i < 0x100; i++)
{
ob2.b[i] = i;
}
memcpy(result_ptr, &ob2, sizeof(samp));
return result_ptr;
}
int main()
{
samp ob1;
samp result;
samp temp;
samp * retval;
retval = func(&result);
memcpy(&temp, retval, sizeof(samp));
memcpy(&ob1, &temp, sizeof(samp));
return 0;
}
графическое оформление с Windows 95 просто режет глаза
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='X86' publicKeyToken='6595b64144ccf1df' language='*'\"")
class Z
{
public:
Z(){}
Z(int i) { data = i; }
void print() { std::cout << data; }
Z operator+ (Z& b);
private:
int data;
};
Z Z::operator + (Z& b)
{
Z result;
result.data = data + b.data;
return result;
}
int main()
{
Z a = 5;
Z b = a + a + a;
b.print();
}