Int Адрес в памяти увеличивается на 4 - PullRequest
0 голосов
/ 19 декабря 2011
#include<stdio.h>

int main()
{
        int x = 1,*t;
        float y = 1.50,*u;
        char k = 'c',*v;

        t = &x;
        u = &y;
        v = &k;

        printf("%p %p %p", t, u, v);

        t++;
        u++;
        v++;

        printf("  %p %p %p", t, u, v);

        return 0;
}

Привет, я сделал этот код, но здесь происходит что-то необычное, я печатаю адреса, когда я увеличиваю адрес всего, тогда из моего просмотра приращение в int будет 2 , float будет 4 , а char будет 1 , но я получил следующее:

0xbffa6ef8 0xbffa6ef0 0xbffa6eff  0xbffa6efc 0xbffa6ef4 0xbffa6f00

Для float и char я думаю, что это правильно, но для int я не знаю, почему он дает так

Ответы [ 4 ]

2 голосов
/ 19 декабря 2011

Вы предполагаете, что sizeof(int) равно 2 в вашей системе / среде.

Однако ваше предположение неверно.Стандарт не требует, чтобы размер int был 2 или что-то конкретное.

Поскольку ваша программа показывает, что размер int равен 4 в вашей системе / среде.

Урок для изучения:
Никогда не полагайтесь на размер шрифта и не предполагайте, всегда используйте sizeof для определения размера, поэтомуСтандарт обеспечивает sizeof.

1 голос
/ 19 декабря 2011

Фактический размер целочисленных типов зависит от реализации. Единственная гарантия заключается в том, что long long не меньше long, что не меньше int, что не меньше short.

или

sizeof (short int) <= sizeof (int) <= sizeof (long int) </p>

* * 1010

Но вы можете быть уверены, что его размер будет не менее 16 бит.


Это будет полезно, подробная информация о размере основных типов C ++.

1 голос
/ 19 декабря 2011

Тип данных int обычно составляет 4 байта. тип данных short или short int составляет 2 байта;

1 голос
/ 19 декабря 2011

Приращение адреса памяти для t задается как sizeof(int).

Если sizeof(int) отличается от того, что вы ожидаете, что t будет увеличено к тому времени, то ваше предположение неверно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...