我想说一下,指针其实也是一种数据类型,就和int,char一样,我们暂且可以把它看成是 int* ,char* 这样的数据类型,我们常说指针变量,它确实是一个变量,存储的是一段内存的起始地址,所以说指针就是地址是不准确的。
地址可以存储在指针变量中,其实也可以存储在非指针变量中,无非是找个变量把这个地址给储存起来罢了。
例如:
void main(void)
{
int m;
unsigned int n;
m = 0;
n = 0;
n = (unsigned int)(&m);
// 把m在内存中的地址赋值给n
*((unsigned int *)n) = 8; //利用*操作符找到内存地址,然后赋值8
printf("%d--%x \n", m, n);
}
上述代码并没有用到指针变量,但是也能对m所在的内存地址进行操作。
你甚至可以这样写
*((unsigned int *)0x12ff7c) = 12; // 0x12ff7c为内存地址
不过上述写法是非常危险的,如果进行操作的地址是一些关键数据所在地址,这样写就破环了里面的数据,导致异常。所以在你那样写之前,请确认这个地址。
大家都说C语言的精髓之一就是指针,依我的理解,可能这样更为确切些“C语言的精髓之一是对内存的直接操作”