Как узнать, сколько байтов используется для хранения переменной в C с помощью оператора sizeof?

У нас есть следующий код:

#include <stdio.h>
#define LEN 10

int main(void) {
    int i;
    int array[LEN];
    int *p;
    for (i = 0; i < LEN; i++) {
        array[i] = i;
    }
    for (p = &array[0]; p < &array[LEN]; p++) {
        printf("Address: %p   ", p);
        printf("Value: %d\n", *p);
    }
    return 0; 
}

И он просит нас узнать, сколько байтов использует сервер для хранения целочисленной переменной, и напечатать ее на новой строке, и это дает нам подсказку использовать размер.

Я немного новичок в работе с указателями, так что это, наверное, очень быстрый вопрос, но должен ли я печатать:

printf("Size of int: %d", sizeof(p));

или sizeof(*p)

Один печатает 4, а другие отпечатки 8. Я склонялся к 8 (который происходит от простого p), поскольку он относится к ячейке памяти, а не к значению переменной, на которую он указывает, верно? И 8 будет означать 8 бит, поэтому 1 байт будет ответом?

0
задан Chris Dodd 7 March 2012 в 23:42
поделиться