zoukankan      html  css  js  c++  java
  • 1-认识c指针

    1.指针和内存

    c程序在编译后,会以三种形式使用内存

    1静态/全局内存

    静态声明的变量分配在这里,全局变量也使用这部分内存。这些变量在程序开始运行时分配,直到程序终止时才会消失

    2.自动内存

    这些变量在函数内部声明,并且在函数调用时才被创建。他们的作用域局限于函数内部,而且生命周期限制在函数的执行时间内。

    3.动态内存

    内存分配在堆上,可以根据需要释放,而且直到释放才会消失。指针引用分配的内存,作用域限与引用内存的指针。

    如何阅读指针说明

    1 const int *ptr;
    2 #代码解读
    3 1.ptr 是有个变量
    4 2.ptr 是一个指针变量
    5 3.ptr是一个指向整型的指针变量
    6 4.ptr是一个指向常数常亮的指针变量

    注意:指针变量所对应的是地址,而整型变量存放的是某个地址上数据

    用间接引用操作符(*)接引指针

    1 int num = 5;
    2 int *ptr = #
    3 printf("%d
    ",*ptr);
    4 #指针的接引 *ptr

    我们也可以把接引操作符的结果用作左值。术语左值是指赋值操作符左边的操作数,所有左值都必须可以修改,因为他们会被赋值。

    null的概念

    任何时候都不能对NULL指针进行接引,因为它并不包含合法地址

    0的含义可能随着代码的不同而含义不同

    1 int num  = 9; 
    2 int *ptr = 0;#此时的0为NULL
    3 *ptr - 0;#此时的0为常数0

    指针操作符

    *                   用来声明指针

    *                   用来解引指针

    ->                 指向指针

    +                  用于指针做加法

    -                   用于指针做减法

    ==  !=          比较两个指针

    > < >= <=    比较两个指针

     1 int vector = {1,2,3}
     2 int * ptr = vector;
     3 printf("%d
    ",*ptr);
     4 #输出的值为1
     5 ptr  += 1;
     6 printf("%d
    ",*ptr);
     7 ptr  += 1;
     8 printf("%d
    ",*ptr);
     9 #输出的值为1
    10 ptr  += 1;
    11 #输出的值为1

    每次的指针加一,地址就加4

    指针做减法

    1 int vector = {28,41,7};
    2 int *ptr = vectoe + 2;
    3 printf("%d
    ",*ptr);
    4 #打印出的值是7;
    5 ptr --;
    6 printf("%d
    ",*ptr);
    7 #打印出的值是41;

    ptr的每次减一,地址都会向前移动四个字节

    指针相减

    两个指针相减会的到两个指针的地址上的差值,可以判断数组中的元素顺序。

    笨鸟先飞
  • 相关阅读:
    SharePoint Framework (SPFx) 开发入门教程
    SharePoint 2013 Designer 入门教程
    SharePoint 2013 开发教程
    SharePoint 2013 入门教程
    SharePoint Online 部署SPFx Web部件
    SharePoint Online SPFx Web部件绑定数据
    SharePoint Online 创建SPFx客户端Web部件
    SharePoint Online 配置框架(SPFx)开发环境
    SharePoint Online 创建应用程序目录
    SharePoint Online 启用 IRM
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/12926652.html
Copyright © 2011-2022 走看看