Определение с википедии (ISO/IEC/IEEE 24765-2010):
Тип данных — класс данных, характеризуемый членами класса и операциями, которые могут быть к ним применены
Чем char* не тип данных? Содержит адрес, операции определены: может быть скастован к void*, может быть получено значение типа char*, может быть скастован к int'у, арифметические операторы.
руки тебе за это не отрубят, но ознакомившиеся с твоим кодом, этого очень будут желать
Я вроде нигде не предлагал кастовать указатели к int'у.
В ассемблере да. А в C/C++ нет такого типа. Я ожидал чего-нибудь вроде void*, а ты так глупо следуешь стереотипам. Вот насчёт void* у меня только одна отмазка - это решает компилятор.
А насчёт char* - такого типа нет, а указатели такого типа вычисляются по адресной арифметике.
Стандарты и Си и крестов с тобой не согласны. Ты говоришь ерунду. Указатели являются типами. Хорошо бы, если бы ссылки в крестах типами не являлись, но даже они типы.
указатели, ссылки, массивы, классы и структуры - все это в с++ считается типами данных.по крайней мере, так пишет страуструп. и так написано в стандарте.
а как их там компилятор реализует дело десятое. типами данных они от этого быть не перестают.
Thetype of a pointer to void or a pointer to an object type is called an object pointer type. [Note: A pointer to void does not have a pointer-to-object type, however, because void is not an object type. —end note] The type of a pointer that can designate a function is called a function pointer type. A pointer to objects of type T is referred to as a “pointer to T.” [Example: a pointer to an object of type int is referred to as “pointer to int ” and a pointer to an object of class X is called a “pointer to X.” —end example] Except for pointers to static members, text referring to “pointers” does not apply to pointers to members. Pointers to incomplete types are allowed although there are restrictions on what can be done with them (3.11). A valid value of an object pointer type represents either the address of a byte in memory (1.7) or a null pointer (4.10). If an object of type T is located at an address A, a pointer of type cv T* whose value is the address A is said to point to that object, regardless of how the value was obtained. [Note: For instance, the address one past the end of an array (5.7) would be considered to point to an unrelated object of the array’s element type that might be located at that address. There are further restrictions on pointers to objects with dynamic storage duration; see 3.7.4.3. —end note] The value representation of pointer types is implementation-defined. Pointers to cv-qualified and cv-unqualified versions (3.9.3) of layout-compatible types shall have the same value representation and alignment requirements (3.11). [Note: Pointers to over-aligned types (3.11) have no special representation, but their range of valid values is restricted by the extended alignment requirement. This International Standard specifies only two ways of obtaining such a pointer: taking the address of a valid object with an over-aligned type, and using one of the runtime pointer alignment functions. An implementation may provide other means of obtaining a valid pointer value for an over-aligned type.—end note]
Мне, например, не понятно какого хрена ты, нихрена не зная, вещаешь с умным видом. Ведь тебе кто-то может поверить и повторять подобную чушь ещё где-то. Откуда ты хоть свои «сведения» берёшь? Какой источник? Какие аргументы у тебя есть?
Мне, например, не понятно какого хрена ты, нихрена не зная, вещаешь с умным видом. Ведь тебе кто-то может поверить и повторять подобную чушь ещё где-то. Откуда ты хоть свои «сведения» берёшь? Какой источник? Какие аргументы у тебя есть?
Прям глаза разбегаются. На что отвечать-то? Ты же не троль?
я не знаю про что ты, в стандарте C такого говна нет. А то, что компилятор жрёт, так он любое говно жрёт. Никто не обещал, что компилятор все ошибки будет замечать.
TYPE X;// X объявляется как TYPE
TYPE Y, Z;// Z объявляется НЕ как TYPE. Почему?
ты читал главу 8.3
не ты один читал. Сишка старше меня, там полно костылей и костыликов. K&R же в своей книге писали: хотелось как лучше, получилось как всегда. Ну типа «логично», что-бы
int *x;// объявление
*x = 3;// инициализация
*x += 17;// использование