上完了C++的第二节课以后,觉得应该对这个内容进行一个小结,巩固知识点,并对我的心情进行了一个侧面烘托...

开始上课的老师:

正在上课的我:

上去敲代码的我:

过程是这样的:

下来的我:

非常的尴尬,简直是黑历史= =

变量:

变量有整形变量,浮点型变量,字符型变量,当然还有指针变量。对于32位操作系统而言,为字符型变量分配的内存单元是一个字节,整型是两个字节,单精度浮点型变量为四个,双精度浮点型变量为八个字节,今天要阐述的指针变量是四个字节。

指针变量所存储的是地址。

int a;
int *pa;
pa = &a; //将整形变量a的地址赋值给整型指针pa

经过上面代码的处理以后,指针pa指向变量a。

指针变量的定义:

int *ptr1;
float *ptr2;
char *ptr3;
void *ptr;

指针变量的赋值:

int *ptr,a = 4;
ptr = &a; //将变量a的地址赋值给指针变量ptr

经过上面语句的处理以后,整形指针指向整形变量a。原来以为整形指针和整形变量放在一起定义编译会出错,学习了:int *ptr,a=4;

指针变量的引用:

(1)

int main()
{int *p,m;scanf("%d",&m);p = &m; //指针p指向mprintf("%d\n",*p);return 0;
}

这段程序比较简单,没有什么问题。

(2)

int main()
{int *p,m;p = &m;scanf("%d",p);printf("%d\n",m);return 0;
}

我:“???”
回来以后自己试了下,弄懂了这个内容,就是把之前输入的scanf中的&m替换为p。这里摘取一段C++中文网介绍scanf的说明。

例如:&a、&b分别表示变量a和变量b的地址。这个地址就是编译系统在内存中给a、b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。 应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。

(3)

int main()
{int *p,m;scanf("%d",p);p = &m;printf("%d\n",m);return 0;
}

“这不行吧???”
确实是不行的,程序崩溃。原因是因为其不安全性。

指针:

指针是一种特殊的变量,它存储的数值是内存中的一个地址。
1.指针的类型
2.指针所指向的类型
3.指针的值 或者 指针所指向的内存区
4.指针本身所占据的内存区

指针的类型和指针所指向的类型:

1.指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。
2.只需把指针声明语句里的指针名字和名字左边的指针声明符*去掉,剩下的部分就是这个指针所指向的类型。
int *ptr; //整形 指针
char *ptr; //字符型 指针
int* *ptr; //整形指针 的 指针
int (*ptr)[3]; //指向含三个整形元素的整形数组 的 指针
int* (*ptr)[4]; //指向含四个整形指针的指针数组(array of pointers) 的 指针 

这里注意“数组 指针”(a pointer to an array)和“指针 数组”(array of pointers)的区别,参考资料:指针数组和数组指针的区别

void 指针

int main()
{int m = 5;void *ptr;ptr = &m;printf("%d\n",*ptr);return 0;
}

编译错误。

“void型指针,表示这个指针指向的内存中的数据的类型要由用户来指定。
比如内存分配函数malloc函数返回的指针就是void *型,用户在使用这个指针的时候,要进行强制类型转换,也就是显式说明该指针指向的内存中是存放的什么类型的数据
(int *)malloc(1024)表示强制规定malloc返回的void*指针指向的内存中存放的是一个个的int型数据。”

指针的值:指针所指向的内存区。

指针本身所占据的内存区:

可以使用sizeof(指针类型),对于32位操作系统来说,系统为指针变量分配4个字节的长度。

char *np;1. sizeof(char) // 1
2. sizeof(*np) //4
3. sizeof(char *) //4
4. sizeof(char *p) //compiling error

C++课程上 有关“指针” 的小结相关推荐

  1. 信息技术课计算机软件的微课,微课在信息技术课程上的有效应用策略研究

    [摘 要]微课教学发展迅猛,成为当前教育领域的热点主题.微课以其独特的魅力吸引着学生,激发了学生的学习兴趣,对教师的教学创新起到了指导作用.从开发制作到授课内容的特殊性,在信息技术课堂上使用微课确实有 ...

  2. 视频教程-Unity客户端框架设计PureMVC篇视频课程(上)-Unity3D

    Unity客户端框架设计PureMVC篇视频课程(上) 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过 ...

  3. Moodle网络课程上如何添加视频文件

    在moolde网络课程中,除了图文,如果可以添加上视频资料,相信一定为Moodle课程添色不少.网络上有很多丰富的视频资源,除了我们最常用的下载上传方式,是否可以在线播放呢? 1.在moodle课程中 ...

  4. 基于空间方法的图神经网络模型_用于时空图建模的图神经网络模型 Graph WaveNet | 课程上新...

    课程概要 本课程来自集智学园图网络论文解读系列活动. 是对论文<Graph WaveNet for Deep Spatial-Temporal Graph Modeling>的解读. 时空 ...

  5. 指针数据类型 java_C/C++ 指针的小结——指针与其它数据类型(数组、字符串、函数、结构体)的关系...

    一.指针与数组和字符串 1.指针与数组 当声明数时,编译器在连续的内存空间分配基本地址和足够的储存空间,以容纳数组的所有元素.基本地址是数组第一个元素(索引为0)的存储位置.编译器还把数组名定义为指向 ...

  6. 华为应用市场AGC研习社游戏课程上新,助力游戏开发者高效分发获量

    华为应用市场AppGallery Connect研习社(简称AGC研习社)正式上线<华为游戏中心>系列培训课程,课程内容聚焦游戏开发者关心的热点话题,包括如何上架游戏,如何高效触达用户等, ...

  7. 仪器仪表课程上的大作业——示波器的使用

    智能仪器仪表分析--示波器的原理.使用方法及改进 本文基于实用角度介绍了模拟以及数字示波器的基本原理,着重于各个模块间的相互关系,而没有细致分析具体的电路是如何实现的.特别分析了智能仪表--数字式示波 ...

  8. 永久免费!吴恩达刚公布的深度学习课程上线网易云课堂

    原来中标的是网易云课堂! 6 月 23 日,吴恩达宣布离开百度三个月后的创业项目:Deeplearning.ai,8 月 8 日,吴恩达的最新课程"Deep Learning Special ...

  9. C语言指针知识点小结

    前期回顾   C语言指针基础知识点(一)–指针及指针变量   C语言指针基础知识点(二)–指针变量的引用   C语言指针基础知识点(三)–指针变量作为函数参数   C语言指针基础知识点(四)–通过指针 ...

最新文章

  1. Linux控制台打开显示字符画,Linux 命令行字符画工具
  2. java修改数据库表结构_数据库设计(一):设计传统系统表结构(Java开发)
  3. finalspeed安装及使用教程
  4. 70后、80后、90后的区别(很有意思)
  5. 6-2 多项式求值 (15 分)
  6. python office库使用_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!...
  7. [翻译]Hystrix wiki–How it Works
  8. [paper reading] ResNet
  9. 手机 com.android.backupconfirm可以删除吗,手机上什么文件可以删除?答案都在这里了...
  10. 如何解决chm类型的文件在Windows操作系统中无法打开
  11. 英语数字的 android,英语数字听力手机版
  12. Qt实现提示音以及QSound的使用说明
  13. bzoj3332: 旧试题
  14. stm32之HAL库实现us延时方法
  15. 打开网站服务器显示403,打开网站显示403是什么意思
  16. 翻译: 3.4. Softmax 回归 pytorch
  17. 企业数字化转型 CIO需遵循三大原则
  18. Word论文写作公式居中、编号右对齐设置
  19. HTML播放华为云视频流,华为云点播服务视频管理功能强大,上云就是省心
  20. his系统计算机软件,医院信息系统(HIS)

热门文章

  1. java local_java.time.LocalDateTime with()方法
  2. centos7重装python_CentOS7重装yum和python
  3. 打docker镜像_从安全到镜像流水线,Docker 最佳实践与反模式一览
  4. linux如何运行qt源码,Linux/Ubuntu下编译Qt4.8.2源码
  5. c语言程序设计电加热炉,基于80C52单片机的电加热数字恒温控制系统设计
  6. 云计算呼叫中心_干货|云呼叫中心系统和传统呼叫中心系统的区别在哪?
  7. java gson_Java 中 Gson的使用
  8. s2sh框架搭建(基于spring aop)
  9. codeforce No to Palindromes!(枚举)
  10. docker 安装nacos_康过来!Nacos配置和管理微服务的使用