| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 
- /*===========================*/
 
 - /*question                                          */
 
 - /*1 什么是指针?                                  */
 
 - /*2 什么是数组?        很简单,不赘述*/
 
 - /*3 数组与指针的共性是什么?         */
 
 - /*===========================*/
 
 - 重点说明指针丶指针和数组共性
 
  
- //*****************************************************************
 
 - 1 什么是指针?
 
 - 指针:指针是变量的内存地址.
 
 - example:
 
 - //--------code-----------------------------------
 
 - #include <iostream>                                                                
 
  
- using namespace std;
 
  
- int main()
 
 - {
 
 -         int *p;                                        //①
 
 -         int n=10;                                //②
 
 -         p=&n;                                        //③
 
 -         cout<<"*p="<<*p<<endl;        //④
 
 -         return 0;
 
 - }
 
 - //------------------------------------------------
 
 - Explain:①声明p是指向int型变量的指针(切记)
 
 -                 ②n=10,这再明显不过.
 
 -                 ③将p指向n的地址,也就是说,当执行
 
 -                 第三行代码时,p指向的地址中存储的
 
 -                 值为10(即:使用&获得变量n的地址)
 
 -                 ④输出*p,意思就是输出指针指向地址
 
 -                 (n的地址)中存储的值.
 
 -                         
 
 -                 可见指针的类型并不是声明指针时用的整型
 
 -                 指针是一个地址内存的地址是一个数字但是
 
 -                 千万不要以为这个数字可以存到int或double
 
 -                 型的变量中 这是大错特错的  why?
 
 -                 因为这是传统!(萨维奇教授说的)
 
 -                 
 
 -                 指针指向一个地址 这个地址由来确定
 
 -                 如果你省去第二丶三行 直接将第一句改为
 
 -                 int *p=10 这也是错误的 因为指针的地址
 
 -                 在你创建指针时已经确定 你不能通过这种
 
 -                 方式修改指针指向的内存地址
 
 -                 
 
 -                 *是取值操作符 &是取址(地址)操作符 显然
 
 -                 在p=&n中 指针p获取了变量n的内存地址 当
 
 -                 进行*p输出时使用*就获取了变量n的值(因为
 
 -                 指针指向了n所在的地址) so easy aha?
 
 -                 
 
 - Summary:指针指向一个内存地址.
 
 - //-------------------------------------------------                
 
 - Thinking1:现在声明了一个变量,如何看到它在内存中
 
 -                  的什么位置?
 
 -                 
 
 -         ans:使用cout语句直接输出p或者&n;        
 
 - //--------------------------------------------------
 
 - Thinking2:指针可以计算吗?
 
 -                 
 
 -         ans:不能进行标准算术运算,可以进行某种形式的加减
 
 -                 操作.例如和数组合用时,可以通过地址偏移找到某
 
 -                 个数组元素.
 
 - //--------------------------------------------------
 
  
- //*************************************************************
 
  
- 2.数组
 
 - 这个就不多说了吧.
 
  
- //*************************************************************
 
  
- 3.数组与指针的共性是什么?
 
 - 如果没有搞清楚指针,请不要看这节,免得一直处在眩晕的状态中.
 
  
- 数组总是以第一个元素的内存地址作为初始地址,而不会记录其它元素
 
 - 的地址,你家住在黄土高坡,黄土高坡的第一百家是你家,你总不至于通
 
 - 过挨家挨户的开门看来确定吧,一个很显而易见的办法是,你记得你家的
 
 - 门牌号,确定好第一家门牌号,你就可以数到100进门,那确实是你家没错
 
  
- 指针指向一个地址,既然你家是100号,开始的时候指针指向黄土高坡一号
 
 - 你通过指针(地址)偏移到100,那就是你家,准没错.
 
  
- //**********************//
 
 - //   共性:内存地址.                //
 
 - //**********************//
 
  
- //利用指针遍历数组地址(核心:遍历)
 
 - #include <iostream>                        
 
 - using namespace std;
 
 - int main()
 
 - {
 
 -         int a[5]={2,5,8,3,7};
 
 -         int *p;
 
 -         for(p=a;p<(a+5);p++)        //首条件:指针指向数组首地址        
 
 -         {
 
 -                 cout<<*p<<endl;                //过程:指针对数组地址进行
 
 -         }                                                //遍历,向数组地址取值
 
 -         return 0;
 
 - }
 
  
- //------------------------------------------------------------------
 
 - //使用数组首地址进行偏移取值(核心:偏移)
 
 - #include <iostream>                        
 
 - using namespace std;
 
  
- int main()
 
 - {
 
 -         int a[5]={2,3,4,5,6};
 
 -         int *p;
 
 -         p=a;//为何不用&a:因为a本身就是地址,取地址后再取地址是不对滴
 
 -         for(int i=0;i<5;i++)        
 
 -         {
 
 -                 cout<<*(a+i)<<endl;
 
 -         }
 
 -         return 0;
 
 - }
 
 - //***********************************************************************
 
  
 
- 个人浅见,如有错误,望大家斧正!
 
  复制代码 |   
 
 
 
 |