C++入门基础01:指针与引用
创始人
2024-02-02 18:27:40

C++入门基础:指针与引用

指针

#include 
//系统定义头文件一般是尖括号
#include
#include
using namespace std;//引用与指针
//是复合数据类型,与基本数据类型int、double这类是不一样的
//指针存储的是一个变量或者对象的地址int main()
{//一、指针://先定义一个普通的数据类型int a = 10;//定义一个指针//1、定义指针指向的数据类型,int*表示指向int类型的一个指针。//2、p表示指针的名称。这里p可以赋予nullptr空指针,但是必须要赋值。//3、如果想要p指针指向a,那么就将a的地址(&a)付给p指针。int* p = &a;//输出来看一下://将*放在指针名的前面,*p表示取得指针所指向的内容,这个过程就叫做解引用。cout << "p指向的内容是:" << *p << endl;cout << "p的值为:" << p << endl;//二、空指针int* q = nullptr; //空指针不指向任何对象。所以不能取空指针所对应的值,否则会发生错误。// cout << "q指向的内容是:" << *q << endl; //这句是有问题的cout << "q的值为:" << q << endl;return 0;
}

在这里插入图片描述
**使用指针的优点和必要性: **
1、指针能够有效的表示数据结构,如链表;
有的时候我们要实现一些复杂的数据结构,比如说链表。
使用链表是为了保存不连续的数据存储。
在这里插入图片描述
2、能动态分配内存,实现内存的自由管理;
3、便捷高效的使用数组,如C风格字符串使用;
4、指针传参:值传递不如地址传递高效,因为值传递先从实参的地址中取出值,在赋值给形参带入函数使用;而指针则把形参的地址直接指向实参地址,使用时直接取出数据,效率提高。

引用

是在C++中才引入的一种数据类型。在C语言中是没有这个数据类型的。
引用主要用于引用传参,通过引用传参可以在函数里面修改变量的值,通过这个参数将修改后的结果回传。

指针和引用的区别
1、引用必须被初始化(初始值必须是一个对象),指针不必须(但最好要初始化)。
2、引用初始化以后不能被改变,指针可以改变所指的对象。
3、不存在指向空值的引用,但是存在指向空值的指针。
4、指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
5、指针是一个对象,可以定义指向指针的指针。但引用不是对象,没有实际地址,所以不能定义指向引用的指针,也不能定义指向引用的引用。

#include 
//系统定义头文件一般是尖括号
#include
#include
using namespace std;//引用与指针
//是复合数据类型,与基本数据类型int、double这类是不一样的
//指针存储的是一个变量或者对象的地址int main()
{//一、指针============================//先定义一个普通的数据类型int a = 10;//定义一个指针//1、定义指针指向的数据类型,int*表示指向int类型的一个指针。//2、p表示指针的名称。这里p可以赋予nullptr空指针,但是必须要赋值。//3、如果想要p指针指向a,那么就将a的地址(&a)付给p指针。int* p = &a;//输出来看一下://将*放在指针名的前面,*p表示取得指针所指向的内容,这个过程就叫做解引用。cout << "p指向的内容是:" << *p << endl;cout << "p的值为:" << p << endl;//二、空指针============================int* q = nullptr; //空指针不指向任何对象。所以不能取空指针所对应的值,否则会发生错误。//cout << "q指向的内容是:" << *q << endl; //这里会报错,不能取空指针所对应的值。cout << "q的值为:" << q << endl;//三、引用============================//是在C++中才引入的一种数据类型。在C语言中是没有这个数据类型的。int b = 10;//引用定义时,初始化时需要绑定一个对象。如果我们直接定义一个引用不给绑定一个初始化对象,就会报错。//因此引用创建时必须初始化,即绑定一个初始化对象。int& ref = b;// int& ref1; //这里会报错,引用创建时必须初始化。cout << "ref:" << ref << endl;ref++;cout << "ref:" << ref << endl;//这里我们再查看一下变量b,变量b会随着ref引用的变化而变化,引用是变量b的一个别名,对引用的操作就是对变量本身的操作。cout << "b:" << b << endl;return 0;
}

在这里插入图片描述

其他内容

1、#include ,iostream是指iostream库。iostream的意思是输入输出流,直接点说就是in(输入) out(输出) stream(流),取in、out的首字母与stream合成。
iostream 库的基础是两种命名为 istream 和 ostream 的类型,分别表示输入流和输出流。流是指要从某种 IO 设备上读出或写入的字符序列。术语“流”试图说明字符是随着时间顺序生成或消耗的。

2、自定义的头文件,自定义的就不可以通过尖括号这种形式了。例如:#include “test.h”。

3、调用cout这个函数进行内容输出。cout是在std命名空间之下的。这里如果想不加std::,就需要在上方声明std的使用using namespace std,using namespace std这样就限定了在std的这个命名空间中去找函数。std就是标准库。

4、运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单;调试程序: F5 或调试 >“开始调试”菜单

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...