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的每次减一,地址都会向前移动四个字节

    指针相减

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

    笨鸟先飞
  • 相关阅读:
    JS定时器相关用法
    asp.net 使用DroDownList来实现二级联动
    移动端页面开发流程
    使用DataList实现数据分页的技术
    使用CSS3制作三角形小图标
    JS面向对象
    JS封闭函数、闭包、内置对象
    封装自己的DB类(PHP)
    github之文件的三种状态关系
    Windows Socket编程笔记之最简单的小Demo
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/12926652.html
Copyright © 2011-2022 走看看