首先,指针是一个特殊的数据类型,它存储了一个内存地址,指向其他实体。它不是一个整数,虽然可以将指针的值打印为一个整数表示。因此,问一个int指向什么是不正确的,因为只有指针才能指向其他实体。
其次,指针类型提供了一些适用于地址的操作,如取地址(&)、解引用(*)等。而整数类型int提供了适用于整数的算术和逻辑操作。这意味着指针和整数之间的操作是不同的,不能混用。
举例来说,如果将一个指针赋值给int变量,即将指针的值赋给一个整数,这是不合法的。因为指针和整数是不同的类型,不能隐式地进行类型转换。类似地,如果将一个整数赋给指针变量,也是不合法的。
例如,假设有以下代码:
int* pi; // 声明一个指向整数的指针
int i = 7; // 声明一个整数变量并赋值为7pi = &i; // 将i的地址赋给pi,是合法的操作
int j = *pi; // 解引用pi并将其值赋给j,也是合法的操作int k = pi; // 将指针pi的值赋给整数k,是不合法的操作
pi = 7; // 将整数7赋给指针pi,也是不合法的操作
在上面的例子中,将i的地址赋给指针pi是合法的,因为指针可以指向其他实体。而将指针的值赋给整数k是不合法的,因为指针类型和整数类型不同。同样,将整数7赋给指针pi也是不合法的。