[VC++入门]指针一

 俗话说没有搞清楚指针就没有学会C/C++,所以指针是一个相当重要的东东,相当年在用 C#调用C++写的动态链接库时,以为C++中的指针就是C#中的引用类型(ref),但是看了一下却不是这样。指针当然和内存是离不开的,有很多版本的定义,但是我觉得最容易理解的是:每一个变量都有一个内存地址,这个地址就称为 指针

    有两个与指针有关的运算符:取地址运算符“&”(用于取一个变量的地址)和指针运算符“*”(以一个指针作为其操作数,其运算结果表示所指向的变量)。
 1  #include   < iostream.h >
 2  void    main()
 3  {
 4       int   a, b,  * pa,  * pb;
 5      a = 10 ;   b = 20 ;
 6      pa =& a; pb =& b;         //  使pa指向a,pb指向b
 7      cout <<* pa << ' , ' <<* pb << ' \n ' ;
 8      pa =& b;   pb =& a;         //  使pa指向b,pb指向a
 9      cout <<* pa << ' , ' <<* pb << ' \n ' ;
10       * pa = 100 ;    * pb = 200 ;     //  分别对b和a赋值
11      cout << a << ' , ' << b << ' \n ' ;
12   }

    从上面我们可以看到声明了两个变量a,b类型为int,两个指针pa,pb(指针类型为int *,指向的类型为int)。第一步&a取得为a所分配的地址即将pa指向a的地址,所以*pa=a=10,同理*pb=b=20;第二步同理可以得到*pa=b=20;*pb=a=10;第三步由于第二步将pa指向b,pb指向a所以a=*pb=200,b=*pa=100。

    指针与数组关系密切,编程时可以用指针代替下标引用数组元素,指针使数组的使用更为灵活、有效。当声明一个数组后,编译程序会按照数组的类型和长度为它分配内存空间,数组名表示数组在内存中的首地址;当用一个指针变量存储数组首地址时,该指针就指向这个数组,就可以通过指针运算间接访问数组的元素。指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。
 1  #include   < iostream.h >
 2  void    main()
 3  {
 4       int    a[ ] = { 2 4 6 8 10 };
 5       int *   pa = a;             //  或pa=&a[0]
 6       int    result = 0 ;
 7       for ( int  i = 0 ; i < 5 ; i ++ )
 8      {
 9          result +=* pa;            //  通过指针访问数组元素
10          pa ++ ;             //  指针运算
11      }
12      cout << " result= " << result << ' \n ' ;
13   }

    从上面我们可以看到首先我们声明了一个数组,并付值也就是说分配其内存。而a表示数组在内存中的首地址,声明一个指针并指向a。则pa++就是指向数组的下一个地址(int类型占四个字节)。 

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/06/05/vcpp_points.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值