Сколько памяти занимает указатель c

Обновлено: 21.11.2024

int, float или char любая переменная-указатель занимает 2 байта памяти..

Был ли этот ответ полезным? Да

прититрипати

Ответы профиля от prititripathi

это займет 2 байта, потому что адрес хранилища указателя, который r имеет тип int

Был ли этот ответ полезным? Да

саурабх1341

Ответы профиля от saurabh1341

2 байта.. потому что p будет содержать адрес типа 'int'

Был ли этот ответ полезным? Да

прититрипати

Ответы профиля от prititripathi

адрес хранилища указателя, поэтому для него потребуется 2 байта

Был ли этот ответ полезным? Да

боде

Профиль Ответы от jbode Вопросы от jbode

Ответ зависит от платформы. Это может быть всего 2 байта или больше 8. В системах, с которыми я работаю, обычно это 4 байта.

Был ли этот ответ полезным? Да

бхану

Был ли этот ответ полезным? Да

джанани

таким образом, выделяется 32 бита, если мы объявляем char *p;

Был ли этот ответ полезным? Да

Был ли этот ответ полезным? Да

Акшая

Был ли этот ответ полезным? Да

ануша

Два байта памяти

Был ли этот ответ полезным? Да

пуджа

Был ли этот ответ полезным? Да

анкитгуджрати27

Ответы профиля от ankitgujrati27

& адрес имеет целочисленный тип, он не может быть символом или числом с плавающей запятой.
& Integer занимает два байта для хранения, поэтому ответ будет 2 байта.

Был ли этот ответ полезным? Да

мэгги

Был ли этот ответ полезным? Да

суман

*p означает, что нет определенного объема памяти, выделенного для того, чтобы он принимал те данные, которые вы даете, и нет ограничений, например, до этого размера. Нет потери памяти.

Был ли этот ответ полезным? Да

навата

Был ли этот ответ полезным? Да

шафи

зависит от типов данных. но этот ответ 1 байт.

Был ли этот ответ полезным? Да

шива

Был ли этот ответ полезным? Да

ронак

Будет выделено 2 байта памяти, поскольку указатель всегда указывает на целое число без знака, поскольку адрес является целым числом без знака.

Был ли этот ответ полезным? Да

ШИЛПА

это займет 2 байта. потому что указатель всегда занимает 2 байта

Был ли этот ответ полезным? Да

анупама

Был ли этот ответ полезным? Да

Авинаш Чоурасия

Был ли этот ответ полезным? Да

боде

Профиль Ответы от jbode Вопросы от jbode

Я знаю, что уже ответил на этот вопрос, но я подумал, что нужно включить удобное определение макроса для получения размера любого типа (указатель или что-то другое) на вашей платформе (см. вставку кода). FWIW, вот результаты в моей системе (Linux 2.4.20, компилятор gcc в режиме C99):

Размер char = 1
Размер char * = 4
Размер unsigned char = 1
Размер unsigned char * = 4
Размер короткого = 2
/>Размер короткого * = 4
Размер беззнакового короткого = 2
Размер беззнакового короткого * = 4
Размер длинного = 4
Размер длинного * = 4
Размер длинного * = 4
/>Размер unsigned long = 4
Размер unsigned long * = 4
Размер long long = 8
Размер long long * = 4
Размер unsigned long long = 8
Размер unsigned long long * = 4
Размер float = 4
Размер float * = 4
Размер double = 8
Размер double * = 4
Размер long double = 12
Размер long double * = 4
Размер структуры = 8
Размер структуры = 8
Размер структуры * = 4
Размер объединения = 4
Размер объединения * = 4

Указатели в C легко и интересно изучать. Некоторые задачи программирования на C проще выполнять с помощью указателей, а другие задачи, такие как динамическое выделение памяти, невозможно выполнить без указателей. Таким образом, становится необходимым изучать указатели, чтобы стать идеальным программистом на C. Давайте начнем изучать их простыми и легкими шагами.

Как вы знаете, каждая переменная представляет собой ячейку памяти, и каждая ячейка памяти имеет свой адрес, доступ к которому можно получить с помощью оператора амперсанда (&), обозначающего адрес в памяти. Рассмотрим следующий пример, в котором выводятся адреса определенных переменных —

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Что такое указатели?

Указатель — это переменная, значением которой является адрес другой переменной, т. е. прямой адрес ячейки памяти. Как и любую переменную или константу, вы должны объявить указатель, прежде чем использовать его для хранения адреса любой переменной. Общая форма объявления переменной-указателя —

Здесь type — это базовый тип указателя; это должен быть допустимый тип данных C, а var-name — это имя переменной-указателя. Звездочка *, используемая для объявления указателя, — это та же звездочка, что и для умножения. Однако в этом утверждении звездочка используется для обозначения переменной как указателя.Взгляните на некоторые допустимые объявления указателей —

Фактический тип данных значения всех указателей, будь то целое число, число с плавающей запятой, символ или что-то еще, один и тот же: длинное шестнадцатеричное число, представляющее адрес памяти. Единственная разница между указателями разных типов данных заключается в типе данных переменной или константы, на которую указывает указатель.

Как использовать указатели?

Есть несколько важных операций, которые мы будем выполнять с помощью указателей очень часто. (a) Мы определяем переменную-указатель, (b) присваиваем адрес переменной указателю и (c) наконец получаем доступ к значению по адресу, доступному в переменной-указателе. Это делается с помощью унарного оператора *, который возвращает значение переменной, расположенной по адресу, указанному ее операндом. В следующем примере используются эти операции —

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

Нулевые указатели

Всегда рекомендуется присваивать значение NULL переменной-указателю, если у вас нет точного адреса для назначения. Это делается во время объявления переменной. Указатель, которому присвоено значение NULL, называется нулевым указателем.

Указатель NULL — это константа с нулевым значением, определенная в нескольких стандартных библиотеках. Рассмотрим следующую программу —

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

В большинстве операционных систем программам не разрешен доступ к памяти по адресу 0, поскольку эта память зарезервирована операционной системой. Однако адрес памяти 0 имеет особое значение; это сигнализирует о том, что указатель не предназначен для указания на доступную ячейку памяти. Но по соглашению, если указатель содержит пустое (нулевое) значение, предполагается, что он ни на что не указывает.

Чтобы проверить наличие нулевого указателя, вы можете использовать оператор if следующим образом:

Указатели в деталях

У указателей много, но простых концепций, и они очень важны для программирования на C. Следующие важные концепции указателей должны быть понятны любому программисту на C —

В указателях можно использовать четыре арифметических оператора: ++, --, +, -

Можно определить массивы для хранения нескольких указателей.

C позволяет вам иметь указатель на указателе и так далее.

Передача аргумента по ссылке или адресу позволяет вызываемой функции изменить переданный аргумент в вызывающей функции.

C позволяет функции возвращать указатель на локальную переменную, статическую переменную и динамически выделенную память.

Читайте также: