指针与指针变量

  1、i_pointer是一个指针变量,而*i_pointer表示i_pointer所指向的变量即i。

-------------



下面两个语句作用相同:
① i=3;
② *i_pointer=3;

  2、定义指针变量:

基类型 *指针变量名;
下面都是合法的定义:
  float *pointer_3; // pointer_3是指向单精度型数据的指针变量
  char *pointer_4; // pointer_4是指向字符型数据的指针变量
请注意: 指针变量名是pointer_3和pointer_4,而不是*pointer_3和*pointer_4,即“*”不是指针变量名的一部分,在定义变量时在变量名前加一个“*”表示该变量是指针变量

    针变量名是pointer_3,而*pointer_3表示指针pointer_3所指向的存储单元(如果是变量,那么他就指向这个变量)。
  那么,怎样使一个指针变量指向另一个变量呢?只需要把被指向的变量的地址赋给指针变量即可。例如:
  pointer_1=&i; //将变量i的地址存放到指针变量pointer_1中
  pointer_2=&j; //将变量j的地址存放到指针变量pointer_2中

  3、引用指针变量:

  (1)如果已执行了“pointer_1=&a;”语句,请问&*pointer_1的含义是什么?“&”和“*”两个运算符的优先级别相同,但按自右至左方向结合,因此先进行*pointer_1的运算,它就是变量a,再执行&运
算。因此,&*pointer_1与&a相同,即变量a的地址。
  如果有pointer_2=&*pointer_1;它的作用是将&a(a的地址)赋给pointer_2,如果pointer_2原来指向b,经过重新赋值后它已不再指向b了,而也指向了a。

  (2)*&a的含义是什么?先进行&a的运算,得a的地址,再进行*运算,即&a所指向的变量,*&a和*pointer_1的作用是一样的(假设已执行了“pointer_1=&a;”),它们等价于变量a。即*&a与a等价。

#include <iostream>
#include <windows.h>
using namespace std;
void main(){
char c;
int *num,*p;
int a=10,b=20;
num=&a;
cout<<*num<<" "<<endl;
cout<<*&b<<" "<<DWORD(&(*&b))<<" "<<DWORD(&b)<<endl;
c=getchar();
}







原文地址:https://www.cnblogs.com/lbangel/p/3177819.html