• 2019/02/15训练日记+指针(二)


    最近做STL的题,STL有多少种容器都还不明确,这个题做起来就与点浪费了,今天看了一天大神讲STL。他们讲的都是map set vector,没有queue,只能去CSDN看大佬发的博客,有点高深,和进一波勾起了我的求知欲,天天看一部分,明天一部分,明天就逼着自己写一份,有关容器的总结,让自己更了STL,下面是前几天预习指针所摘抄的知识点。

    说起指针,就一定不能不提数组,数组与指针是天生一对,分不开。均以int型为例(interesting);

    数组的名字是一个指针常量指向数组的起始地址

    PS:int a[50];
    a的类型是int*
    可以用a给int*类型的指针赋值
    a是编译时就饿确定了的常量,不能够对a进行赋值

    指针和数组

    1.作为函数形参时,int*p和int p[ ]等价
    Such as
    int resert(int *p)
    {
    return sizeof§;
    }
    等价于
    int resert(int p[ ])
    {
    return sizeof§;
    }

    #include <iostream>
    using namespace std;
    int main()
    {
        int a[200]; 	int * p ;
        p = a;				// p指向数组a的起始地址,亦即p指向了a[0]
        * p = 10;			//使得a[0] = 10
        *( p + 1 ) = 20; 	//使得a[1] = 20
        p[0] = 30; //p[i] 和*(p+i) 是等效的,使得a[0] = 30
        p[4] = 40; //使得a[4] = 40
        for( int i = 0;i < 10; ++i) //对数组a的前10个元素进行赋值
        *( p + i) = i;
        ++p;				 // p指向a[1]
        cout << p[0] << endl; //输出1 p[0]等效于*p, p[0]即是a[1]
        p = a + 6; // p指向a[6]
        cout << * p << endl;// 输出6
        return 0;
    }
    

    上代码实战
    写一个数组倒置函数

    void Reverse(int * p,int size)
     { 
     	 for(int i = 0;i < size/2; ++i)
     	 {
         	int tmp = p[i];
    	 	p[i] = p[size-1-i];
      	    p[size-1-i] = tmp;
      	   }
    }
    
    指向指针的指针

    int * *p;
    p是指向指针的指针,p指向的地方应该存放着一个类型为int * 的指针,*p 的类型是int *.

    void 指针

    void指针:void * p;可以用任何类型的指针对void 指针进行赋值或初始化:
    因sizeof(void) 没有定义,所以对于void * 类型的指针p,
    *p 无定义
    ++p, --p, p += n, p+n,p-n 等均无定义

  • 相关阅读:
    1061. 判断题(15)
    1031. 查验身份证(15)
    1006. 换个格式输出整数 (15)
    1046. 划拳(15)
    1001. 害死人不偿命的(3n+1)猜想 (15)
    1021. 个位数统计 (15)
    1054. 求平均值 (20)
    写出这个数 (20)
    设计模式之中介者模式
    kill命令
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12799099.html
Copyright © 2020-2023  润新知