一些指针澄清

use*_*753 2 c pointers

可能重复:
带指针的C问题

我需要一些指针帮助,特别是以下示例:

#include <stdio.h>
int main()
{
    int *i, *j;

    i = (int *) 60;
    j = (int *) 40;
    printf("%d", i - j);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码生10成为输出.我只需要知道i - j这里究竟做了什么.

Max*_*Max 11

i并分别j指向内存位置6040.

你在这里做的是指针减法.如果ij是字节指针(字符*),i-j将是20,正如人们所预料.

但是,对于其他指针,它返回两个指针之间的元素数.在大多数系统(int *)60 - (int *)405,因为在这20个字节中有5个4字节整数的空间.显然,您的平台有16位整数.