Я написал следующий код:
#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 (*). Может ли кто-нибудь предложить предложение? Я не ищу ответа, просто подталкиваю в правильном направлении.
int *p; // p is a pointer to an int
Таким образом, размер указателя будет: sizeof p
, который вы можете напечатать как:
cout << "The size of int pointer is: " << sizeof p << endl;
Это то, что вам нужно для печати размеров других указателей.
Разыменование выполняется только тогда, когда вы хотите получить доступ к тому, на что указывает указатель.
Например.
int i = 5;
int *p = &i;
*p = 6;
*p = *p + 1;
//etc
Здесь вы просто хотите получить размер указателей. Таким образом, разыменование не требуется.