一、引用

1.引用的作用:给变量起一个别名,是c++对c的扩充。原名和别名有相同的地址,根本上就是同一个东西,只是名字不一样。c++的引用机制主要是为了用作函数参数,增强函数传递数据的能力,比如swap函数,引用就是为了直接修改实参。

2.声明方式:

int a;
int &b=a;

&紧跟在数据类型后,即为引用声明符,其他地方为取地址符。

3.与指针区别:

声明一个引用时必须同时初始化,之后不能再修改,指针不用;

引用初始化后不能再改变,指针可以;

引用不能指向空值,指针可以;

不能引用数组或数组元素;

不能建立引用的引用;

指针不能指向引用;

二、函数参数指针

1.调用函数时不会改变指针的值,但可能会改变指针指向的值。

三、数组指针

1.假设指针p已指向数组中某一元素,则p+i指向该元素的下i个元素,实际上,p+i=p+i x sizeof(DataType)。

2.c++是将函数形参里的数组当做指针来处理的,也就是函数调用时不存在数组,只有指针。

四、字符串指针

1.字符串的一种定义方式:

char str[]="asdasd";

定义时可以不写元素个数,但必须初始化,int 啥的也可以这样定义,然后就会自动识别个数,char的话最后会加上'\0'。

2.char*定义的字符串可用[]来访问,但不能修改。

五、函数指针

1.指向函数的指针一定要用"()",比如(*p),这是因为优先级的问题,如果没有括号就成了返回值为指针的函数了。如int *a(int x,int y),就是返回值为指针的函数。

2.指向函数的指针可以作为函数的参数,这是为了将函数名传给函数形参,就可以在调用一个函数时根据不同的实参再调用别的函数,这种用法很少见。

六、指针数组

1.int *p[4]=(int *) p[4]即为指针数组,数组中元素是指针类型的。

int (*p)[4]为指向数组的指针,数组中元素是int。

七、void *指针

1.(void *)指针类型是指向不确定的类型而不是任何类型,必须转换为确定的类型才能使用,所以只是一个过渡。

2.可以把非void *赋给void *,但不能反过来。

e.g.

int a=89;
int *p1=&a;
void *p2;
p2=(void *)p1;
*(int *)p2即为a;

C++ 引用、指针的更多相关文章

  1. perl5 第十二章 Perl5中的引用/指针

    第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用  子程序模板七.数组与子程序八.文件句 ...

  2. C++ const 引用 指针

    先简单回忆一下常量的性质: int main() { const int buffSize = 512; buffsize = 512; //× buffSize是常量 } 初始化时: const i ...

  3. 引用&指针交换函数实践

    实践如下: #include <iostream> using namespace std; // 普通交换,注意这里的ab值,在具体调用时是基本数据的拷贝,原始数据不会变化 // 因此这 ...

  4. c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

    1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...

  5. C++ Primer 第二章 引用 指针 const限定符

    1.引用: 为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d也就是声明的变量名(声明符就是变量名). PS:1.通过图片中编译所提示的报错信息 ...

  6. C++引用指针 & 构造函数

    近来回转 C++的学习,脑子又被搞得了一团迷(简直不要忘得太快.....    ) 过后静下来想一想,还是因为有些东西没搞清楚导致,所以理了理两个容易搞迷糊的地方. 1. 引用与指针 C++进行传值更 ...

  7. 子类父类(虚函数下的 引用指针 对象)->看来没有子类指针这回事

    #include<iostream> using namespace std; class Father { public: Father() { cout << " ...

  8. python3.x 类似cpp引用指针传参修改

    #同名局部变量调用外部全局变量: num=100def fun(): global num#告诉编译器是全局的num num+=100 print(num)print(fun)print(fun()) ...

  9. C++ 引用 指针 使用举例

    1. 请看下程序 inline void CScanLineFill::removeOldNodeAET(AET* &aetList, const float yCurrent) { AET* ...

  10. C/C++:提升_指针的指针和指针的引用

    C/C++:提升_指针的指针和指针的引用 写在前面 今天在使用指针的时候我发现了一个自己的错误.

随机推荐

  1. Django's CSRF mechanism

    Forbidden (403) CSRF verification failed. Request aborted. You are seeing this message because this ...

  2. ps -ef | grep

    ps -ef | grep java   查看所有关于java的进程 root     17540     1  0  2009 ?        01:42:27 /usr/java/jdk1.5. ...

  3. Dynamics CRM 修改Excel 最大导出记录限制及 最大上传文件限制

    CRM默认的Excel最大导出记录是10000条,最大上传文件限制为5m. 这样的限制可以满足少量数据的批量更新,但是如果数据量比较大的话需要修改最大的导出记录限制,和上传文件的大小,网上有的是直接修 ...

  4. IDEA及时更新js代码

    需要在Tomcat的设置中为: on ‘update‘ action:当用户主动执行更新的时候更新 快捷键:Ctrl + F9 on frame deactication:在编辑窗口失去焦点的时候更新 ...

  5. 网站图片增强JS插件2.0(兼容IE&FF)

    网站图片增强JS插件2.0简单介绍:插件可以增强网站互动能力与外链建设,用户在欣赏图片的同时,把看好的图片直接制作成自己喜欢的样式后通过QQ等传播,增强外链建设,通过用户互动创造外链.(支持:放大缩小 ...

  6. ACTION 的跳转与参数传递

    openmodifychildsysfunmenu <td width="54%"><a href="#" style="float ...

  7. eoj 3507 坑爹的售票机

    EOJ 3507 坑爹的售票机   问题描述 oxx 和 xjj 决定和小伙伴们一同坐船前往 Xiamen.去 Xiamen 的船票一张 p 元. 当他们满怀兴致地来到港口时发现居然只有不设找零的自动 ...

  8. .NET修改配置文件

    首先说明,本文参考了这个帖子http://www.cnblogs.com/henw/archive/2012/01/31/2333783.html,进行了一些补充 简要说来两种方法,一是把config ...

  9. asp.net web.config配置节说明(转发)

    原文地址:http://www.cnblogs.com/qingyuan/articles/1501644.html web.config 文件查找规则:      (1)如果在当前页面所在目录下存在 ...

  10. HDU1430;魔板(BFS+康托展开)

    传送门 题意 给出初始序列与终止序列,给出三种操作,问最少经过几次操作能使初始->终止,输出操作(字典序最小) 分析 字符串只有8个字符,使用康托展开. 1.BFS将所有序列从"123 ...