手机
当前位置:查字典教程网 >编程开发 >C语言 >C++基础入门教程(四):枚举和指针
C++基础入门教程(四):枚举和指针
摘要:我已经把《C++Primer》一书准备好了,如果这本《C++PrimerPlus》继续这么瞎闹的话,我就换主角~!没错,这书连ifwhile...

我已经把《C++ Primer》一书准备好了,如果这本《C++ Primer Plus》继续这么瞎闹的话,我就换主角~!

没错,这书连if while都还没介绍呢,就开始把指针搬出来了,虽然只是简单介绍..

这目录编排我也是醒了。

那么,按照书上的进度,今天来初步说说指针。

但,今天周五,你懂的,就随便水一下,因为我怕到周一又忘了。

1.枚举

那么,枚举是什么呢?(小若:等等~!说好的指针呢?)

大部分高级语言里应该都有枚举了,所以也没什么好介绍的。

使用是这样的:

复制代码 代码如下:

// 定义

enum MonsterType {

enMonster_nor,

enMonster_hard,

}

// 声明一个枚举变量

MonsterType mType;

// 使用

if(mType == enMonster_nor) {

log("去死吧~!");

}

else if(type == enMonster_hard) {

log("哦呵呵,您好,这是我这个月的薪水,都给您了哦,我最崇拜您了,您是我这辈子最....(1万字省略)");

}

2.什么是指针

因为这不是真正的C++教程,只是补充而已,所以基础概念我就不说。

指针就是能够指向内存空间的东西,没错,它只是指向内存空间,它本身不是内存空间。

好了,不唠叨。

3.声明指针

声明指针变量是很简单的事情,如下代码:

复制代码 代码如下:

int num = 10;

int *p = #

没错,即使是我们以前的普通变量也是有内存地址的,使用&符号就能取得它的内容地址。

然后,我们的指针变量p就是专门用来存放内存地址的。

在声明变量的时候,加上*号就代码这是指针变量。

记住,这是声明~接下来如果没学过指针的,就会混乱了。

4.使用指针

指针要怎么使用呢?很简单,如下代码:

复制代码 代码如下:

int num = 10;

int *p = #

*p = 20;

std::cout << *p << "n";

std::cout << num << "n";

最后,*p和num都是20。

p是指针变量,它保存了num变量的内存地址。

而*p就是这个内存地址上面的值,也就是我们的变量num的值了。

于是,*p = 20 就代表把这个内存地址上的值改为20。

重点来了:

1.假设num的内存地址0xffffff,这个地址上的存储的内容是数字10

2.p是一个指针,它保存了num的内存地址,所以p的值是0xffffff,这个地址上的存储的内容是数字10

3.*p代表是p指向的那个内存地址上面所存储的内容,也就是数字10,换句话说,*p的值是10

4.指向*p = 20,相当于把p指向的内存地址上面的内容改为20

5.由于num的内存地址就是p指向的地址,所以num在内存中保存的值已经改变了

6.最终num的值也会变成20

明白了么?(小若:用中文再说一遍)

嗯,用中文再说一遍的话,那就是:

因为p指向的内存地址就是num所在的内存地址,所以通过num和*p都能改变这个地址上的内容。

一句话,此刻*p相当于num,可以进行各种操作(赋值、加减法等等)

(小若:早点说中文多好啊!非得显摆你那半调子日语吗?!)

5.指针外传

有时候,我们可以这样声明指针:

复制代码 代码如下:

int *num;

// 但你千万不能这么使用

*num = 100;

咋一看,这么使用好像很正常,和刚刚说的一样。

但,请注意,指针num在声明的时候并没有赋值,也就是说,这个指针现在不知道是指向哪里的。

所以,随便使用这样一个不知道是指向哪的指针,很可能会破坏我们的程序。

比如吖,我们本来是想声明一个指向我们一根头发的指针,但是,我们没有给它赋值。

于是,这指针就不知道指向哪了,它可能还指向它以前曾经指过的地方。

万一这指针以前指向的地方是我们的腰部以下的部位呢?

万一我们用这个指针执行了“剪掉指针所指的地方,全剪了”。

没错,本以为剪的是头发,结果呢!把腰部以下给剪了!

这下半辈子怎么办,就再也不能跑步了(你想哪去了?)

6.结束了

好,今天就水到这里了~下次见

【C++基础入门教程(四):枚举和指针】相关文章:

C 语言基础教程(我的C之旅开始了)[五]

基于结构体与指针的详解

C++基本算法思想之递推算法思想

C 语言基础教程(我的C之旅开始了)[三]

C 语言基础教程(我的C之旅开始了)[六]

C 语言基础教程(我的C之旅开始了)[九]

基于SVN源码服务器搭建(详细教程分析)

C++中一维数组与指针的关系详细总结

C/C++中退出线程的四种解决方法

C++输出斐波那契数列的两种实现方法

精品推荐
分类导航