C++基础入门教程(四):枚举和指针

所属分类: 软件编程 / C 语言 阅读数: 84
收藏 0 赞 0 分享

我已经把《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++中四种对象生存期和作用域以及static的用法总结分析

以下是对C++中四种对象生存期和作用域以及static的用法进行了详细的介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

C++嵌套类与局部类详细解析

从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类之外的作用域使用该类名时,需要加名字限定
收藏 0 赞 0 分享

C++空类详解

以下是对C++中的空类进行了详细的介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

C++之友元:友元函数和友元类详解

友元是一种允许非类成员函数访问类的非公有成员的一种机制。可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元
收藏 0 赞 0 分享

C++中返回指向函数的指针示例

int (*ff(int)) (int *,int);表示:ff(int)是一个函数,带有一个int型的形参,该函数返回int (*) (int *,int),它是一个指向函数的指针,所指向的函数返回int型并带有两个分别是Int*和int型的形参
收藏 0 赞 0 分享

C数据结构之单链表详细示例分析

以下是对C语言中的单链表进行了详细的分析介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

C数据结构之双链表详细示例分析

以下是对c语言中的双链表进行了详细的分析介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

浅析如何在c语言中调用Linux脚本

如何在c语言中调用Linux脚本呢?下面小编就为大家详细的介绍一下吧!需要的朋友可以过来参考下
收藏 0 赞 0 分享

深入解析unsigned int 和 int

以下是对unsigned int和int进行了详细的分析介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

浅谈C++中的string 类型占几个字节

本篇文章小编并不是为大家讲解string类型的用法,而是讲解我个人比较好奇的问题,就是string 类型占几个字节
收藏 0 赞 0 分享
查看更多