Программа фундаментальных типов данных

0

Я написал следующий код:

#include <iostream>
#include <iomanip>

using namespace std;

int main(){

    char c;
    int i;
    short int j;
    long int k;
    float f;
    double d;
    long double e;

    cout << "The size of char is: " << sizeof c << endl;
    cout << "The size of int is: " << sizeof i << endl;
    cout << "The size of short int is: " << sizeof j << endl;
    cout << "The size of long int is: " << sizeof k << endl;
    cout << "The size of float is: " << sizeof f << endl;
    cout << "The size of double is: " << sizeof d << endl;
    cout << "The size of long double is: " << sizeof e << endl;

    system("pause");
    return 0;
}

Цель этой программы - распечатать размер основных типов данных, которые, я думаю, я выполнил. Другая цель этой программы - напечатать размер указателя на каждый из этих типов данных. Мне сложно понять, как это сделать. Я понимаю, что указатель - это переменная, которая хранит адрес другой переменной, и что указатели включают оператор deference (*). Может ли кто-нибудь предложить предложение? Я не ищу ответа, просто толчок в правильном направлении.

  • 2
    Что не так с, например, sizeof(&k) ? Кстати, я думаю, вы найдете ответ на это несколько скучно;)
Теги:
pointers
types
primitive-types

1 ответ

1
int *p; // p is a pointer to an int

Таким образом, sizeof указателя будет: sizeof p, который вы можете напечатать так:

cout << "The size of int pointer is: " << sizeof p << endl;

Это то, что вам нужно, чтобы печатать другие размеры указателей.

Выделение происходит только тогда, когда вы хотите получить доступ к указателю. Например

int i = 5;
int *p = &i;

*p = 6;
*p = *p + 1; 
//etc

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

  • 0
    Так, например, я могу просто сделать: char * c; // c - указатель на символ cout << "Размер символа:" << sizeof c << endl; cout << "Размер указателя на символ:" << sizeof c << endl; Спасибо за помощь.
  • 0
    @ user3727648 Размер символа будет sizeof *c а размер указателя будет sizeof c .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню