DSP

指针与取地址

2019-07-13 21:02发布

指针的几个注意点 <1>首先要明白指针的变量名是什么,如int *p;它的变量名是p而不是*p; <2>指针一定是只能保存地址,而保存地址使用的是指针的变量,所以是用变量名p=&a,而不是*p = &a(定义时除外)。 <3>声明定义时的*和后面操作时的*的含义是不同的,如int *p 正如int* p ;表示的是定义一个指针变量,而后面操作时*p = 10;表示的是去操作指针指向的那个地址的内容。 <4>指针变量必须要初始化,否则不知道指向哪个地址。 <5>指针就是用来存放地址的,并且可以通过这个地址来操作对应的内容。只要知道了一个变量的内存地址,那么我们就可以通过指针来操作块内存空间。 #include #include int main() { int a=10; int* p=&a; printf("%p %p ",&a,p); printf("%d %d ",a,*p); *p=20; printf(" %p %p ",&a,p); printf("%d %d ",a,*p); system("pause"); } 上面的int *p=&a,即将指针p指向a的地址。此时p保存的是变量a的地址,*p保存的是a的值。可以从输出结果中看出二者地址和值都是一样的。 接下来直接对*p进行赋值,实际上改变的是这个地址空间的存储值,因此此时输出的a和*p都是20;