在C语言中,int*
类型的指针在解引用后会变成int
类型,这是因为指针本身是一个指向整数的指针,当解引用后,指针指向的内存地址中存储的是整数的内存地址,因此解引用后指针指向的是一个整数的变量。
当你解引用一个int*
类型的指针时,实际上是将该指针所指向的地址中的值解引用了,解引用后指针指向的是一个整数的变量,因此该指针所指向的地址中存储的值也会被修改为该变量的值,解引用的值。如果不进行解引用操作,该地址中的值是指针所指向的地址,不会被修改,而且该指针所指向的变量也不会被修改。
如果不想改变指针所指向的地址中存储的值,可以使用指针解引用操作符*
来获取指针所指向的变量的值,而不是修改指针本身。例如:
int* ptr = &var; // 将指针ptr指向变量var的地址
int value = *ptr; // 获取变量var的值
如果想要修改指针所指向的地址中存储的值,可以使用指针解引用操作符*
来获取指针所指向的地址,并将其赋值为另一个值,例如:
int* ptr = &var; // 将指针ptr指向变量var的地址
int value = *ptr; // 将指针ptr所指向的地址赋值为另一个值
*ptr = value; // 修改指针ptr所指向的地址中的值
需要注意的是,如果指针指向的是一个数组的首地址,解引用后指针指向的是该数组的第一个元素,而不是数组本身。因此,在解引用数组首地址时,需要特别小心,以免访问非法内存。