[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,如需转载请自行联系原作者

相关文章
|
3天前
|
C++ 数据格式
LabVIEW传递接收C/C++DLL指针
LabVIEW传递接收C/C++DLL指针
10 1
|
2天前
|
C++ 编译器
|
4天前
|
存储 安全 程序员
C++:智能指针
C++:智能指针
19 5
|
4天前
|
编译器 C语言 C++
C++入门基础-2
C++入门基础
11 3
|
4天前
|
C语言 C++
C++入门基础-1
C++入门基础
17 1
|
5天前
|
算法 测试技术 容器
【刷题】双指针入门
经过这四道题目的洗礼,我大概对双指针有了初步印象,接下来我会继续努力!!!
43 13
【刷题】双指针入门
|
5天前
|
自然语言处理 编译器 C语言
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
本文章是我对C++学习的开始,很荣幸与大家一同进步。 首先我先介绍一下C++,C++是上个世纪为了解决软件危机所创立 的一项面向对象的编程语言(OOP思想)。
31 1
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
|
5天前
|
存储 安全 C++
深入理解C++中的指针与引用
深入理解C++中的指针与引用
7 0
|
5天前
|
存储 安全 编译器
【C++从练气到飞升】03---C++入门(三)
【C++从练气到飞升】03---C++入门(三)
|
5天前
|
存储 自然语言处理 编译器
【C++从练气到飞升】02---C++入门(二)
【C++从练气到飞升】02---C++入门(二)