VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 3397|回复: 99

《实用C++》第22课 地址与指针

  [复制链接]
51_avatar_middle
online_admins Syc 发表于 2018-2-8 10:22:06 | 显示全部楼层 |阅读模式
《实用C++》第22课 地址与指针《实用C++》第22课 地址与指针

1、什么是地址?
我们在程序中定义的任何变量实际上都是存在内存中的,对吧?那么既然是存在的东西就应该有装他的地方。举个例子,小明家,肯定有小明家的地址,张三家也应该有张三家的地址。再来说一个,比如说谁家都有电视机,对吧,那么我问你电视机在哪里?你肯定会说在客厅的墙上挂着,不管在哪,电视机肯定在他的位置摆放着呢,换句话说电视机也有他自己的地址。所以变量的地址也是一个意思,就是这个变量真正存在哪,在哪里!这就是变量的地址。
下面我们用代码举个例子,例如定义一个字符:
char ch = 'a';
我们用vs的监视窗口来看下字符 ch 的地址是多少呢?他在内存中又是如何来展现的呢?具体看视频教程演示!
那么在使用 cout << ch; 进行输出的时候,cout 也会去从 ch 的地址开始读取一个字符,之后打印输出出来。

好了,通过上面的讲解大家应该大概了解了什么是变量的地址。

2、什么是指针?
变量的地址一般都是比较难记的,例如:0x007f2eab 之类的,那么能不能用专门的一个东西,或者说一种特殊类型的变量来保存这个地址呢?
答案当然是可以的,这个特殊类型的变量就是指针。那么接下来就教大家如何定义指针:
例如:
char* p; //定义什么类型的指针,就在类型的后面加上一个*,代表是指针类型变量的意思。
这样就定义了一个指向char类型变量的指针,但是他没有指向任何变量的地址。接下来我们给他赋值一下:
p = &ch;
这样我们就将指针p指向了字符ch的地址。

备注:为什么指针变量的命名一般总带着一个字母p,因为指针的英文单词是pointer,所以简写就是p

那么我们换一下:
int a = 5;
int* pa = &a;
这里面我们就将一个int类型的指针pa指向了int类型变量a的地址。&符号是取地址符号,&a 就是取变量a的地址。
这么这样解释一下:
变量a的值或者说a的内容是5,变量a的地址是 &a
指针pa他也是一个变量,只不过是一个指针类型的变量,所以指针变量pa的值或者说内容就是 &a,指针变量pa的地址是 &pa
也就是说指针变量也是变量,他也有内容和地址。之前给大家讲解的其他类型变量的值或者说内容都是反应自身的。但是指针变量里面的值或者内容是反应其他变量的。

3、变量与指针:
在C/C++语言中可以通过取地址符号&得到变量的地址,例如:
int a = 5;
int* pa = &a;

那么,通过变量的地址,能否得到变量自身呢?答案是可以的!
int a = 5;
int* pa = &a;
*pa = 6;
即:在指针变量的前面加上一个*就能得到指针指向的变量自身。
所以对一个变量的修改,既可以通过该变量自身(直接修改),也可以通过指针/地址来实现修改(间接修改)。


4、指针变量的定义及初始化:
①、指针变量的定义格式如下:基类型 * 指针变量名;
②、符号* 既可以靠近基类型,也可以靠近指针变量名,例如:
int* p; 和 int *p; 都是正确的。
③、指针变量可以在定义的时候就初始化,也可以先定义后初始化,也可以在以后的任意一个时间去指向某个变量的地址:
int a = 5;
int *pa;
pa = &a;
int *pb = &a;

④、基类型就是该指针变量指向的变量的类型。例如:
int* pa; 这个指针变量的定义,就是定义了一个指向int类型的指针变量pa;你就不能把一个float类型的变量地址赋给他。例如:
int* pa;
float a = 2.6;
pa = &a;
这种写法是错误的。
⑤、指针变量可以指向同一类型的变量,例如:
int a = 5, b = 6;
int *p = &a;
p = &b;
即:指针变量p既可以指向变量a的地址,也可以指向变量b的地址。

5、定义一个函数,实现交换两个参数的值:
例如这样定义可以吗?
void swap(int a, int b)
{
    int t = a;
    a = b;
    b = t;
}
大家可以试试,看看这么写能否正常的交换参数 a 和 b 的值呢?
应该这样定义才对:
void swap(int* pa, int* pb)
{
    int t = *pa;
    *a = *b;
    *b = t;
}

6、小作业:
实现一个函数,作用是获取一个数组中的最大值和最小值,函数声明如下:
void get_min_max(int src[], int* max_v, int* min_v)
{
    //函数代码写在这个下面
}

备注:关于野指针以及new申请内存的知识点,在以后的课程中会给大家讲解!

第22课免费试看,下载地址回复后可见:
游客,如果您要查看本帖隐藏内容请回复

#######################################################
获得所有教学视频、课件、源代码以及售后答疑详见:
《实用C++》:http://www.cctry.com/thread-275996-1-1.html
VC驿站官方客服QQ:8260671

#######################################################
《实用C++》第22课 地址与指针《实用C++》第22课 地址与指针




上一篇:《实用C++》第21课 使用字符串处理函数操作字符数组
下一篇:关于实用C++课程的一个小建议

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

59_avatar_middle
在线会员 fangting1989 发表于 2018-2-8 10:52:10 | 显示全部楼层
我最怕的就是指针了  头痛呀

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

98_avatar_middle
在线会员 tomok 发表于 2018-2-8 15:23:32 | 显示全部楼层
学习了         

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

18_avatar_middle
online_vip 听雨声等你笑 发表于 2018-2-9 08:08:01 | 显示全部楼层
学习学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

78_avatar_middle
在线会员 csa 发表于 2018-2-9 09:14:29 | 显示全部楼层
感谢楼主分享,谢谢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

74_avatar_middle
online_vip08 wssfcn 发表于 2018-2-9 10:00:18 | 显示全部楼层
看看     

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

13_avatar_middle
online_vip 明天你好123 发表于 2018-2-10 13:27:57 | 显示全部楼层
hello world

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
在线会员 冥蝶 发表于 2018-2-11 08:28:20 | 显示全部楼层
多谢分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

32_avatar_middle
在线会员 这个杀手不太冷 发表于 2018-2-11 19:59:15 | 显示全部楼层

学习学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

49_avatar_middle
在线会员 yuanpinq 发表于 2018-2-11 20:52:22 | 显示全部楼层
rhf rhf rhf

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

22_avatar_middle
online_vip jesy 发表于 2018-2-11 22:09:10 | 显示全部楼层
学习学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

18_avatar_middle
在线会员 cpt8 发表于 2018-2-12 20:30:01 | 显示全部楼层
第22课免费试看,下载地址回复后可见:

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

82_avatar_middle
online_vip icesoul 发表于 2018-2-14 13:33:18 | 显示全部楼层
正在重复学习中

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

55_avatar_middle
在线会员 soyoung 发表于 2018-2-16 18:50:55 | 显示全部楼层
谢谢。。。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

37_avatar_middle
online_vip QLL 发表于 2018-2-18 13:41:12 | 显示全部楼层
好好学习一下指针

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

75_avatar_middle
在线会员 guanghua1214 发表于 2018-2-21 08:16:56 | 显示全部楼层
支持新年老大出教程!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

80_avatar_middle
在线会员 zp521 发表于 2018-2-23 08:49:02 | 显示全部楼层
坚持学习!!!!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

10_avatar_middle
online_vip08 小菜一碟 发表于 2018-2-24 12:08:52 | 显示全部楼层
我来了,新年快乐
继续学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

65_avatar_middle
在线会员 ping170 发表于 2018-2-25 09:16:01 | 显示全部楼层
Thanks&#9834;(&#65381;ω&#65381;)&#65417;

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

94_avatar_middle
online_vip08 Mtong 发表于 2018-2-25 10:57:48 | 显示全部楼层
加油学习!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-8-18 18:28

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表