Tag: sizeof

sizeof class с int, функцией, виртуальной функцией в C ++?

Это онлайн-тест C ++, который был выполнен. #include using namespace std; class A { }; class B { int i; }; class C { void foo(); }; class D { virtual void foo(); }; class E { int i ; virtual void foo(); }; class F { int i; void foo(); }; class G { […]

C: sizeof single struct member

Я пытаюсь объявить структуру, которая зависит от другой структуры. Я хочу, чтобы sizeof был безопасным / педантичным. typedef struct _parent { float calc ; char text[255] ; int used ; } parent_t ; Теперь я хочу объявить struct child_t который имеет тот же размер, что и parent_t.text . Как я могу это сделать? (Псевдокод ниже). […]

Что определяет размер целого числа?

sizeof(int) показывает 4 на моем Dev Cpp хотя он работает на 64-битной машине. Почему он не рассматривает базовые HW и показывает 8 вместо этого? Кроме того, если я компилирую среду, она также изменится на 64 бит (имеет ли 64 bit compiler в первую очередь ?!), изменился бы размер int? Существуют ли какие-либо стандарты, которые решают […]

C указатели и массивы / оператор ‘sizeof’

Возможный дубликат: разность указателей стека для указателя и массива символов Чтобы проиллюстрировать мой вопрос: int main(void){ int myary[20]; int *myaryPtr; myaryPtr = myary; sizeof(myary); // Will it return 80? Correct? sizeof(myaryPtr); // Will it return 4? Correct? return 0; } Во-первых, мое предположение верно? И затем, полагая, что мое предположение верно, какое подробное объяснение? Я […]

Получение размера malloc только с возвращенным указателем

Я хочу иметь возможность изменять размер моего массива, поэтому я создаю его таким образом: int* array; array = malloc(sizeof(int)*10);//10 integer elements Я могу использовать это как массив, как обычно, но когда я пытаюсь найти его размер так: size = sizeof(array)/sizeof(int); Я получаю ответ 1, потому что он не распознает его как указание на массив Как […]

почему sizeof (‘a’) равен 4 в C?

Возможный дубликат: Почему C символьных литералов ints вместо символов? #include int main(void) { char b = ‘c’; printf(“here size is %zu\n”,sizeof(‘a’)); printf(“here size is %zu”,sizeof(b)); } здесь вывод (см. живую демонстрацию здесь .) here size is 4 here size is 1 Я не понимаю, почему sizeof(‘a’) равен 4?

Не оценивает ли выражение, к которому применяется значение sizeof, делает его законным для разыменования нулевого или недопустимого указателя внутри sizeof в C ++?

Прежде всего, я видел этот вопрос о C99, а принятый аргумент ссылок на ответы не оценивался в стандартном черновике C99. Я не уверен, что этот ответ относится к C ++ 03. Также есть вопрос о C ++, который имеет принятый ответ, ссылаясь на аналогичную формулировку, а также в некоторых контекстах отображаются неоцененные операнды. Неопределенный операнд […]

«% d» ожидает аргумент типа «int», но аргумент 2 имеет тип «long unsigned int»

Я продолжаю получать предупреждения компиляции, но я не знаю, как это исправить: ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [ Программа работает нормально, но я все равно получаю предупреждения компиляции: /* Sizeof.c–Program to tell byte size of the C variable */ #include int main(void) { printf(“\nA Char is […]

Использование sizeof () в памяти malloc’d

Возможный дубликат: новички вопросы о malloc и sizeof Я пытаюсь читать строки в программе. Когда я заметил, что строки иногда были повреждены, я попробовал следующий код: void *mallocated = malloc(100); printf(“sizeof(mallocated) = %d\n”, sizeof(mallocated)); Согласно моей программе, размер mallocated был 8 , хотя я выделил для него 100 байт. Из-за этого, всякий раз, когда я […]

Надежное определение количества элементов в массиве

Каждый программист C может определить количество элементов в массиве с помощью этого известного макроса: #define NUM_ELEMS(a) (sizeof(a)/sizeof 0[a]) Вот типичный вариант использования: int numbers[] = {2, 3, 5, 7, 11, 13, 17, 19}; printf(“%lu\n”, NUM_ELEMS(numbers)); // 8, as expected Однако ничто не мешает программисту случайно передать указатель вместо массива: int * pointer = numbers; printf(“%lu\n”, […]

Давайте будем гением компьютера.