• [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<<' ';
     8     pa=&b;   pb=&a;        // 使pa指向b,pb指向a
     9     cout<<*pa<<','<<*pb<<' ';
    10     *pa=100;   *pb=200;    // 分别对b和a赋值
    11     cout<<a<<','<<b<<' ';
    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[ ]={246810};
     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<<' ';
    13  }
  • 相关阅读:
    第七十四节,css边框与背景
    php中strlen和{}的效率对比
    for循环++i效率
    php优化技巧
    mysql中group_concat函数用法
    mysql引擎互转问题
    array_column php 函数
    php-mysql结果集函数比较
    javaweb 要学习的东西
    Java 泛型和类型安全的容器
  • 原文地址:https://www.cnblogs.com/smallfa/p/6278852.html
Copyright © 2020-2023  润新知