char a,*pa;
a=10;
pa=&a;
*pa=20;
printf("%d\n",a); 为什么a会变成20? pa的地址改变会影响到a吗?
计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
简而言之,指针储存的是内存物理地址,通过物理地址,你能够操作变量的值,效果和通过标识符操作变量的值完全相同。
例如:
int a=10; //a是一个整形标识符,通过a,你能够操作内存当中一块4字节长的空间。
int* p=&a;//p是一个整形指针符,里面储存的是a的内存地址。
*p=5; //这里*p的意思就是操作p储存那块4字节的内存,效果和a=5相同。