В чем разница между этими двумя операциями? - PullRequest
0 голосов
/ 18 мая 2019

Я изучаю C, и я видел этот код, но я не могу понять разницу. Может кто-нибудь объяснить это, пожалуйста? Спасибо.

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int addressAsInt = 0x61FF08;
    printf("address = %p\n", addressAsInt);
    int address2AsInt = 0x61FF14;
    printf("address2 = %p\n", address2AsInt);
    printf("rest = %d\n", address2AsInt - addressAsInt);

    int* address = (int*) 0x61FF08;
    printf("address = %p\n", address);
    int* address2 = (int*)  0x61FF14;
    printf("address2 = %p\n", address2);
    printf("rest = %d\n", address2 - address);

    return 0;
}

Первая разница выводит 0000000C, а вторая 00000003. Я понимаю первое, но не второе.

1 Ответ

2 голосов
/ 18 мая 2019

Первая операция - это простая разница между двумя шестнадцатеричными числами (12 = C в шестнадцатеричном).

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

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