C++课程上 有关“指针” 的小结
上完了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++课程上 有关“指针” 的小结相关推荐
- 信息技术课计算机软件的微课,微课在信息技术课程上的有效应用策略研究
[摘 要]微课教学发展迅猛,成为当前教育领域的热点主题.微课以其独特的魅力吸引着学生,激发了学生的学习兴趣,对教师的教学创新起到了指导作用.从开发制作到授课内容的特殊性,在信息技术课堂上使用微课确实有 ...
- 视频教程-Unity客户端框架设计PureMVC篇视频课程(上)-Unity3D
Unity客户端框架设计PureMVC篇视频课程(上) 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过 ...
- Moodle网络课程上如何添加视频文件
在moolde网络课程中,除了图文,如果可以添加上视频资料,相信一定为Moodle课程添色不少.网络上有很多丰富的视频资源,除了我们最常用的下载上传方式,是否可以在线播放呢? 1.在moodle课程中 ...
- 基于空间方法的图神经网络模型_用于时空图建模的图神经网络模型 Graph WaveNet | 课程上新...
课程概要 本课程来自集智学园图网络论文解读系列活动. 是对论文<Graph WaveNet for Deep Spatial-Temporal Graph Modeling>的解读. 时空 ...
- 指针数据类型 java_C/C++ 指针的小结——指针与其它数据类型(数组、字符串、函数、结构体)的关系...
一.指针与数组和字符串 1.指针与数组 当声明数时,编译器在连续的内存空间分配基本地址和足够的储存空间,以容纳数组的所有元素.基本地址是数组第一个元素(索引为0)的存储位置.编译器还把数组名定义为指向 ...
- 华为应用市场AGC研习社游戏课程上新,助力游戏开发者高效分发获量
华为应用市场AppGallery Connect研习社(简称AGC研习社)正式上线<华为游戏中心>系列培训课程,课程内容聚焦游戏开发者关心的热点话题,包括如何上架游戏,如何高效触达用户等, ...
- 仪器仪表课程上的大作业——示波器的使用
智能仪器仪表分析--示波器的原理.使用方法及改进 本文基于实用角度介绍了模拟以及数字示波器的基本原理,着重于各个模块间的相互关系,而没有细致分析具体的电路是如何实现的.特别分析了智能仪表--数字式示波 ...
- 永久免费!吴恩达刚公布的深度学习课程上线网易云课堂
原来中标的是网易云课堂! 6 月 23 日,吴恩达宣布离开百度三个月后的创业项目:Deeplearning.ai,8 月 8 日,吴恩达的最新课程"Deep Learning Special ...
- C语言指针知识点小结
前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过指针 ...
最新文章
- Linux控制台打开显示字符画,Linux 命令行字符画工具
- java修改数据库表结构_数据库设计(一):设计传统系统表结构(Java开发)
- finalspeed安装及使用教程
- 70后、80后、90后的区别(很有意思)
- 6-2 多项式求值 (15 分)
- python office库使用_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!...
- [翻译]Hystrix wiki–How it Works
- [paper reading] ResNet
- 手机 com.android.backupconfirm可以删除吗,手机上什么文件可以删除?答案都在这里了...
- 如何解决chm类型的文件在Windows操作系统中无法打开
- 英语数字的 android,英语数字听力手机版
- Qt实现提示音以及QSound的使用说明
- bzoj3332: 旧试题
- stm32之HAL库实现us延时方法
- 打开网站服务器显示403,打开网站显示403是什么意思
- 翻译: 3.4. Softmax 回归 pytorch
- 企业数字化转型 CIO需遵循三大原则
- Word论文写作公式居中、编号右对齐设置
- HTML播放华为云视频流,华为云点播服务视频管理功能强大,上云就是省心
- his系统计算机软件,医院信息系统(HIS)
热门文章
- java local_java.time.LocalDateTime with()方法
- centos7重装python_CentOS7重装yum和python
- 打docker镜像_从安全到镜像流水线,Docker 最佳实践与反模式一览
- linux如何运行qt源码,Linux/Ubuntu下编译Qt4.8.2源码
- c语言程序设计电加热炉,基于80C52单片机的电加热数字恒温控制系统设计
- 云计算呼叫中心_干货|云呼叫中心系统和传统呼叫中心系统的区别在哪?
- java gson_Java 中 Gson的使用
- s2sh框架搭建(基于spring aop)
- codeforce No to Palindromes!(枚举)
- docker 安装nacos_康过来!Nacos配置和管理微服务的使用