• c++学习一:指针基础


    1、指针优势,当数据量比较大时,通过指针直接访问数据量所在内存。处理更
      加复杂的数据结构。例如:链表、二叉树、图等。
    2、指针本质是一种表示内存地址的数据类型,它和整型int和浮点数float一样
      只是指针表示是内存地址。
    3、c++中两种途径可以访问内存。
      i:通过变量名间接访问。为了保存数据,通常先定义保存数据的变量,在
      通过变量名间接访问在内存中的数据,进行读写。
     ii:另一种就是直接通过内存地址,也就是通过指针来访问内存中的数据。
    4、语法格式:数据类型* 变量名;
      其中,“数据类型”表示指针所指向的数据是何种数据类型。可以是int、
      string、double等基本数据类型,也可以是自定义的结构体等复杂的数据
      类型。通常数据类型也称指针的类型。
      实际上这两种用法都是合乎c++语法的:
       int* pn;//把int*看成一种数据类型,强调pn为这种数据类型的一个变量
          int *pn;//*pn看作整体,表示它的数据类型是整数,而pn是指向这个整数的指针
      声明多个变量时:
       int* p,p1;//可能出错。p是指针,p1是整数
       int *p,p1;//这个就清楚一些。*p是一个整数,p是指向这个整数的指针
      一般我们都是很规范的一行定义一变量。
    5、指针的赋值和使用
      得到一个指针变量后,变量的值还是一个随机的值。这个值可能在内存中
      无关紧要,也可能是重要数据和代码,如果直接使用很危险,所以在使用
      指针之前,必须对其赋值:指针变量 = 内存地址;
    6、内存运算符:&和*
         &:取地址运算符;
      如:int n=100;
              int* pn=&n;
      *:指针运算符、解析运算符。与&相反,取得指针所指的内容,无论是数据或者程序代码
      如:*pn=100;
              cout<<*pn<<endl;
      特别的:如果指针指向结构体类型的变量,则可以直接用“->”运算符访问结构体变量的成员。
      如:Emplyee Wang;
           Emplyee* pWang = &wang;
           pWang->m_strName = "*Wang";
         两个指针可以指向相同的位置,如:
        int a;
           int* pa = &a;
           int* pb = pa;//使用一个已经存在的指针对另外一个指针赋值

    最后来个例子总结下:
    例:
    #include
    int main(void)
    {
        int a = 10;
        int *b = &a;
        printf("a=%p ",&a);
        printf("b=%p ",b);
        printf("b=%d ",*b);
        return 0;
    }
    结果:a=0xbf989238;b=0xbf989238;b=10
    这里我们又可以学到新的东西就是: 
      i、指针类型数据并不等同于任何数据类型
     ii、用“%d”、“%o”、“%x”及“%u”这几种格式输出指针类型的值是错误的未定义行为
    iii、应该用“%p”转换格式输出指针类型的值
        如:printf("%p,%d ",a,*a);
    备注:输出变量地址就是%p;

  • 相关阅读:
    vue-router的钩子函数
    vue中父组件和子组件的生命周期钩子
    图片的按需加载代码实现
    关于DNS优化的策略
    在url中输入地址到页面呈现发生了什么
    vue-router的组件传值
    微信小程序wx_request封装
    vue生命周期
    vue生命周期的讨论&容易忽略的知识
    【Vue】---{__ob__: Observer}
  • 原文地址:https://www.cnblogs.com/samewang/p/4774183.html
Copyright © 2020-2023  润新知