对于众多人提出的c/c++中指针难学的问题做个总结: 
  指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*x和x的理解,他们并不相同,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout<<*x"|"x;,当定义了int *x;后对x=&a的理解的问题。仔细阅读和联系下面的两个例子我想指针问题就不是难点了!
		 
		
				 #include 
				<
				stdio.h
				>
				#include 
				<
				stdio.h
				>
				  
 
  
 main()
main()  

 
				
						 {
				
				
						{  
 int
						 a,b; 
						//
						 定义a,b两个整形变量用于输入两个整数
						int
						 a,b; 
						//
						 定义a,b两个整形变量用于输入两个整数  
						
								
								 int
						 
						*
						point_1,
						*
						point_2,
						*
						temp_point; 
						//
						 定义三个指针变量
						
						int
						 
						*
						point_1,
						*
						point_2,
						*
						temp_point; 
						//
						 定义三个指针变量  
						
								
								 scanf(
						"
						%d,%d
						"
						,
						&
						a,
						&
						b); 
						//
						 格式化输入a,b的值 */
						
						scanf(
						"
						%d,%d
						"
						,
						&
						a,
						&
						b); 
						//
						 格式化输入a,b的值 */ 
						
								
								 point_1
						=&
						a; 
						//
						 把指针变量point_1的值指向变量a的地址 */
						
						point_1
						=&
						a; 
						//
						 把指针变量point_1的值指向变量a的地址 */ 
						
								
								 point_2
						=&
						b; 
						//
						 把指针变量point_2的值指向变量b的地址 */
						
						point_2
						=&
						b; 
						//
						 把指针变量point_2的值指向变量b的地址 */ 
						
								
								 if
						 (a
						<
						b)
						
						if
						 (a
						<
						b)  

 
						
								 {
						
						
								{  
 temp_point
								=
								point_1; 
								//
								 这里的temp_point是用于临时存储point_1的值也就是变量a的地址的 */
    temp_point
								=
								point_1; 
								//
								 这里的temp_point是用于临时存储point_1的值也就是变量a的地址的 */ 
								
										
										 point_1
								=
								point_2; 
								//
								 把point_2的值赋予point_1 */
								
								    point_1
								=
								point_2; 
								//
								 把point_2的值赋予point_1 */ 
								
										
										 point_2
								=
								temp_point;
								
								    point_2
								=
								temp_point;  
 //
								 由于point_1的值已经改变无法找到,利用前面临时存储的也就是temp_point找回原point_1的值赋予point_2,打到把point_1和point_2值对换的目的*/
   
								//
								 由于point_1的值已经改变无法找到,利用前面临时存储的也就是temp_point找回原point_1的值赋予point_2,打到把point_1和point_2值对换的目的*/ 
								
										
										 }
								
								}
						
						  
 printf(
						"
						%d,%d
						"
						,
						*
						point_1,
						*
						point_2); 
						//
						 利用*point_1和*point_2也就是分辨指向b和a的方法把值显示自爱屏幕上 */
printf(
						"
						%d,%d
						"
						,
						*
						point_1,
						*
						point_2); 
						//
						 利用*point_1和*point_2也就是分辨指向b和a的方法把值显示自爱屏幕上 */ 
						
								
								 }
						
						}
				
				  
 
  
 //
				 此题需要注意和了解是的此法并没有改变变量a,b的值只是利用指针变量分别存储a和b的地址,然后再把那两个指针变量的值对换一下其实就是存储在
				//
				 此题需要注意和了解是的此法并没有改变变量a,b的值只是利用指针变量分别存储a和b的地址,然后再把那两个指针变量的值对换一下其实就是存储在  
 //
				指针变量里面a与b的地址对换,在利用*point_1和*point_2的方式把调换后的值显示出来这里的*point_1实际就是a,此中算法并非真的改变a,b的值,而是
				//
				指针变量里面a与b的地址对换,在利用*point_1和*point_2的方式把调换后的值显示出来这里的*point_1实际就是a,此中算法并非真的改变a,b的值,而是  
 //
				利用指针进行地址交换达到大小排序的目的.
				//
				利用指针进行地址交换达到大小排序的目的.  
				
						
						 
				
				 
		 
		
		
		
				 #include 
				<
				stdio.h
				>
				#include 
				<
				stdio.h
				>
				  
 
  
 main()
main()  

 
				
						 {
				
				
						{  

 int
						 a,b; 
						/**/
						
								/*
								 定义a,b两个整形变量用于输入两个整数 
								*/
						int
						 a,b; 
						/**/
						
								/*
								 定义a,b两个整形变量用于输入两个整数 
								*/
						
						 

 int
						 
						*
						point_1,
						*
						point_2; 
						/**/
						
								/*
								 定义三个指针变量 
								*/
						int
						 
						*
						point_1,
						*
						point_2; 
						/**/
						
								/*
								 定义三个指针变量 
								*/
						
						 

 scanf(
						"
						%d,%d
						"
						,
						&
						a,
						&
						b); 
						/**/
						
								/*
								 格式化输入a,b的值 
								*/
scanf(
						"
						%d,%d
						"
						,
						&
						a,
						&
						b); 
						/**/
						
								/*
								 格式化输入a,b的值 
								*/
						
						 

 point_1 
						=
						 
						&
						a; 
						/**/
						
								/*
								 把指针变量point_1的值指向变量a的地址 
								*/
point_1 
						=
						 
						&
						a; 
						/**/
						
								/*
								 把指针变量point_1的值指向变量a的地址 
								*/
						
						 

 point_2 
						=
						 
						&
						b; 
						/**/
						
								/*
								 把指针变量point_2的值指向变量b的地址 
								*/
point_2 
						=
						 
						&
						b; 
						/**/
						
								/*
								 把指针变量point_2的值指向变量b的地址 
								*/
						
						 

 compositor(point_1,point_2); 
						/**/
						
								/*
								 调用自定义的排序涵数,把a,b的地址传递给point_1和point_2 
								*/
compositor(point_1,point_2); 
						/**/
						
								/*
								 调用自定义的排序涵数,把a,b的地址传递给point_1和point_2 
								*/
						
						 

 printf(
						"
						%d,%d
						"
						,a,b); 
						/**/
						
								/*
								 打印出a,b的值 
								*/
printf(
						"
						%d,%d
						"
						,a,b); 
						/**/
						
								/*
								 打印出a,b的值 
								*/
						
						 
 }
}
				
				  
 
  
 static
				 compositor(p1,p2)
				static
				 compositor(p1,p2)  

 int
				 
				*
				p1,
				*
				p2; 
				/**/
				
						/*
						 定义形式参数p1,p2为指针变量 
						*/
				int
				 
				*
				p1,
				*
				p2; 
				/**/
				
						/*
						 定义形式参数p1,p2为指针变量 
						*/
				
				 

 
				
						 {
				
				
						{  

 int
						 temp; 
						/**/
						
								/*
								 建立临时存储变量 
								*/
						int
						 temp; 
						/**/
						
								/*
								 建立临时存储变量 
								*/
						
						 

 if
						 (
						*
						p1
						<*
						p2) 
						/**/
						
								/*
								 如果*p1<p2,注意这里的*p1和*p2其实就是a和b 
								*/
    
						if
						 (
						*
						p1
						<*
						p2) 
						/**/
						
								/*
								 如果*p1<p2,注意这里的*p1和*p2其实就是a和b 
								*/
						
						 

 
    
						
								 {
						
						
								{  

 temp 
								=
								 
								*
								p1; 
								/**/
								
										/*
										 利用变量temp用于临时存储*p1和就是a的值 
										*/
        temp 
								=
								 
								*
								p1; 
								/**/
								
										/*
										 利用变量temp用于临时存储*p1和就是a的值 
										*/
								
								 

 *
								p1 
								=
								 
								*
								p2; 
								/**/
								
										/*
										 将*p1的值也就是a的值换成*p2的值也就是b的值,等价于a=b 
										*/
        
								*
								p1 
								=
								 
								*
								p2; 
								/**/
								
										/*
										 将*p1的值也就是a的值换成*p2的值也就是b的值,等价于a=b 
										*/
								
								 

 *
								p2 
								=
								 temp; 
								/**/
								
										/*
										 将*p2的值也就是temp的值等价于b=temp 
										*/
        
								*
								p2 
								=
								 temp; 
								/**/
								
										/*
										 将*p2的值也就是temp的值等价于b=temp 
										*/
								
								 
 }
    }
						
						  
 }
}
				
				  
 
  

 /**/
				
						/*
						 注意:此题与上题不同的是,直接改变了a于b的值达到真实改变的目的 
						*/
				/**/
				
						/*
						 注意:此题与上题不同的是,直接改变了a于b的值达到真实改变的目的 
						*/