博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 引用、指针
阅读量:4877 次
发布时间:2019-06-11

本文共 1025 字,大约阅读时间需要 3 分钟。

一、引用

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;

转载于:https://www.cnblogs.com/chakyu/p/7412240.html

你可能感兴趣的文章
快速排序、冒泡排序
查看>>
多个Tomcat同时启动的解决方案
查看>>
opencv
查看>>
VC/MFC非模态对话框实例
查看>>
编译器错误 CS0714和CS0715
查看>>
bzoj 3522 [Poi2014]Hotel 树形dp
查看>>
Deepin-安装laravel
查看>>
Linux 系统启动过程
查看>>
华为机试之广度优先遍历
查看>>
IE内核浏览器localStorage的一个大坑
查看>>
洛谷P4551最长异或路径(Trie树)
查看>>
Linux服务器iops性能测试-iozone
查看>>
C# 切图
查看>>
LeetCode 169. Majority Element解题方法
查看>>
python面试题
查看>>
PHP 设计模式 笔记与总结(5)PHP 魔术方法的使用
查看>>
URAL 1934 spfa算法
查看>>
hdu 4288 Coder (成都赛区 线段树)
查看>>
利用multiprocessing.managers开发跨进程生产者消费者模型
查看>>
P1002 过河卒 【递推、简单动规】
查看>>