地址概念:内存基本单元是一个字节,一个字节8个位。在定义变量的时候,如int a=10;系统为变量a分配2个字节空间:1000~1001,并在1001~1002中存有数据10。内存中没有变量a,只有1000~1001这个地址,所以使用a的时候,拿出这个地址中的值就行了。

    寻址方式:分两种

      1、直接寻址:

      如printf("%d",a);系统找到1000~1001这个地址,取出其中存的值。

      2、间接寻址(指针):

      在一个新的地址2010~2011中存放a的起始地址1000,使用a的时候,在2010中取出a的地址1000,再从1000中取出a的值。

  

    指针类型:

      1、变量指针:

      就是一个变量的地址,a的指针就是1000。值是地址。

      2、指针变量:

      全名是指向变量的指针变量。一个变量专门用来存放另一个变量的地址(即指针),则这个变量称为指针变量。如定义一个变量ap=2010,则ap就是一个指针变量。

      值是指针。(我们需要理解的是指针变量)

    

    *运算和&运算:

      在定义指针变量的时候需要用到*符号:

        int a;int *ap;

        a=10;ap=&a;//&是取地址运算,将a的地址1000取出,赋值给指针变量

        a=*ap;//*是指针运算符(我理解是取值运算符),先取出a变量存的值1000,再取出地址为1000的值,将这个值赋值给变量a。

      总结:*ap==a;

          &*ap==&a;

          *&a==a;

          (*ap)++==a++;

    指向数组的指针变量:    

      数组的指针就是数组的起始地址;用一个变量来存放一个数组的起始地址,这个变量就是指向数组的指针变量。

      int a[10];int *app;//定义

      app=&a[0];app=a;//赋值,通常用后面一种

        总结:app=a;

           app+i==a+i//就是a[i]的地址

           *(app+i)==*(a+i)//对应的值

           数组指针变量可以带下标,app[i]==*(app+i)

      

          

关于C指针的更多相关文章

  1. TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...

  2. enote笔记法使用范例(2)——指针(1)智能指针

    要知道什么是智能指针,首先了解什么称为 “资源分配即初始化” what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化” 在&l ...

  3. C++虚函数和函数指针一起使用

    C++虚函数和函数指针一起使用,写起来有点麻烦. 下面贴出一份示例代码,可作参考.(需要支持C++11编译) #include <stdio.h> #include <list> ...

  4. C++11 shared_ptr 智能指针 的使用,避免内存泄露

    多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以为 ...

  5. c 数组与指针的使用注意事项

    数组变量和指针变量有一点小小的区别 所以把数组指针赋值给指针变量的时候千万要小心 加入把数组赋值给指针变量,指针变量只会包含数组的地址信息 而对数组的长度一无所知 相当于指针丢失了一部分信息,我们把这 ...

  6. Marshal.Copy将指针拷贝给数组

    lpStatuss是一个UNITSTATUS*的指针类型实例,并包含SensorDust字段 //定义一个数组类型 byte[] SensorDust = new byte[30] //将指针类型拷贝 ...

  7. C++智能指针

    引用计数技术及智能指针的简单实现 基础对象类 class Point { public: Point(int xVal = 0, int yVal = 0) : x(xVal), y(yVal) { ...

  8. EC笔记:第三部分:17、使用独立的语句将newed对象放入智能指针

    一般的智能指针都是通过一个普通指针来初始化,所以很容易写出以下的代码: #include <iostream> using namespace std; int func1(){ //返回 ...

  9. 智能指针shared_ptr的用法

    为了解决C++内存泄漏的问题,C++11引入了智能指针(Smart Pointer). 智能指针的原理是,接受一个申请好的内存地址,构造一个保存在栈上的智能指针对象,当程序退出栈的作用域范围后,由于栈 ...

  10. 智能指针unique_ptr的用法

    unique_ptr是独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr,如下面错误用法: std::unique_pt ...

随机推荐

  1. 使用streaming window函数统计用户不同时间段平均消费金额等指标

    场景 现在餐厅老板已经不满足仅仅统计历史用户消费金额总数了,他想知道每个用户半年,每个月,每天,或者一小时消费的总额,来店消费的次数以及平均金额. 给出的例子计算的是每5秒,每30秒,每1分钟的用户消 ...

  2. 一天弹出一次广告cookie

    function setCookie(name, value, expire) { window.document.cookie = name + "=" + escape(val ...

  3. 夺命雷公狗---Thinkphp----15之遍历出来的栏目页的完成

    我们首页的写法和我们的文章页的代码很相似,我们要在点击我们的栏目页的时候遍历出对应的代码: 那么我们就直接来创建一个ListsController.class.php的文件,代码如下所示: 老规矩遍历 ...

  4. css 标签 垂直居中

    <!DOCTYPE html > <html xmlns="http://www.w3.org/1999/xhtml"> <head> < ...

  5. linux中查看硬件温度的命令

    用到的命令是: sensors 这个命令来自一个叫 lm_sensors 的包. 执行 sensors-detect 可以以询问的方式做一些配置(可以选择检测哪些硬件的温度).

  6. 【《zw版·Halcon与delphi系列原创教程》Halcon图层与常用绘图函数

    [<zw版·Halcon与delphi系列原创教程>Halcon图层与常用绘图函数 Halcon的绘图函数,与传统编程vb.c.delphi语言完全不同,     传统编程语言,甚至cad ...

  7. android——单点触控移动,多点触控放大缩小

    xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...

  8. java总结第三次//类和对象2、3

    四.类和对象2 主要内容:Java类的继承.方法的重写.覆盖.访问控制.super 关键字.多态性及其应用 1.继承 要求:Java只支持单继承,不允许多重继承 一个子类只能有一个父类 一个父类可以派 ...

  9. mount源码分析 【转】

    转自:http://blog.chinaunix.net/uid-10769062-id-3230811.html Busybox- 在util-linux/mount.c的line:1609行首先映 ...

  10. Linux MTD系统剖析【转】

    转自:http://blog.csdn.net/lwj103862095/article/details/21545791 版权声明:本文为博主原创文章,未经博主允许不得转载. MTD,Memory ...