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\n",&a);
    printf("b=%p\n",b);
    printf("b=%d\n",*b);
    return 0;
}
结果:a=0xbf989238;b=0xbf989238;b=10
这里我们又可以学到新的东西就是: 
  i、指针类型数据并不等同于任何数据类型
 ii、用“%d”、“%o”、“%x”及“%u”这几种格式输出指针类型的值是错误的未定义行为
iii、应该用“%p”转换格式输出指针类型的值
    如:printf("%p,%d\n",a,*a);
备注:输出变量地址就是%p;

c++学习一:指针基础的更多相关文章

  1. (转) 学习C++ -> 指针初步

    学习C++ -> 指针初步 一.指针    1. 什么是指针?        我们知道, 计算机的内存是由一个个独立的存储单元组成, 并且系统会对每一个存储单元分配一个唯一的号码, 称为这个存储 ...

  2. C#学习笔记(基础知识回顾)之值传递和引用传递

    一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...

  3. Java学习笔记之---基础语法

    Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...

  4. 学习记录-java基础部分(一)

    学习记录-java基础部分(一) 参考:GitHub上的知名项目:javaGuide : https://github.com/Snailclimb/JavaGuide/blob/master/doc ...

  5. 学习java之基础语法(一)

    学习java之基础语法(一) 基本语法 编写 Java 程序时,应注意以下几点: 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的. 类名:对于所有的类来说 ...

  6. Java后端高频知识点学习笔记1---Java基础

    Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...

  7. 这几天开始,先学习一些 java 基础吧,学的有点累

    这几天开始,先学习一些 java 基础吧,学的有点累

  8. Emacs学习心得之 基础配置

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础配置 1.前言2.基础配置 一.前言 本篇博文记录了Emacs的一 ...

  9. Emacs学习心得之 基础操作

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础操作 1.前言与学习计划2.Emacs基础操作 一. 前言与学习计 ...

  10. 如何学习FPGA?FPGA学习必备的基础知识

    如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA   基础知识       FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...

随机推荐

  1. delegate和protocol

    协议和代理对于一个新手来说确实不讨好理解,也有很多的iOS开发的老手对此是懂非懂的.网上的很多博文只是讲了怎么使用,并没有说的很明白.下面我谈一下我的理解. 1.你要先搞明白,协议和代理为什么会出现, ...

  2. 转:android异步任务设计思详解(AsyncTask)

    这里说有设计思想是我根据查看Android源代码提炼出来的代码逻辑,所以不会跟Google工程师的原始设计思想100%符合(也有可能是0%),但是本文一定可以帮助你理解AsyncTask,也可能有一些 ...

  3. bzoj2441 小W的问题

    bzoj2441 按照纵坐标排序,从小到大插入数列中,每个点i维护一个data[i]表示未插入序列中横坐标小于i的数的个数(用线段树)其实点i就是“W”中第一个极小点,那么f[j]就等于1到j-1中所 ...

  4. 自建yum源及分组安装

    最近在研究一套自动化运维方向的框架,在想到远程安装软件包的时候,觉得有yum支持会更方便一些.主要思路是把程序员写的代码或程序打包成rpm,然后提交到自建yum源,并实现按组安装,本地yum源实现步骤 ...

  5. DB2 claim与drain

    DB2使用claim & drain来控制SQL与utility对数据库对象的访问. claim说明有对象正在访问或是将要访问该对象,而drain则是在对象上面加一个drain lock,等所 ...

  6. C# 多线程详解 Part.02(UI 线程和子线程的互动、ProgressBar 的异步调用)

           我们先来看一段运行时会抛出 InvalidOperationException 异常的代码段: private void btnThreadA_Click(object sender, ...

  7. maven 私服搭建

    1,下载 https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.2-01-bundle.zip 2,解压 3,安装 ...

  8. [转载]jQuery1.9完全删除live事件

    其实关于live被删除的事件早就在1.7.2版本以后就有通知过了 不过在官方一直提倡使用.on代替.live的过程中 .live事件一直沿用 今天更新了 看下jQuery1.9的相关信息 发现api中 ...

  9. vc++>>Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enable

    用VC来连接远程MYSQL时,出现如标题一样的错误,网上搜索了此错误产生的原因,最后自己找到了解决办法. 此错误产生的原因: 异常原因在于服务器端的密码管理协议陈旧,使用的是旧有的用户密码格式存储:但 ...

  10. iOS开发项目之MVC与MVVM

    MVC MVC,Model-View-Controller,我们从这个古老而经典的设计模式入手.采用 MVC 这个架构的最大的优点在于其概念简单,易于理解,几乎任何一个程序员都会有所了解,几乎每一所计 ...