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

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

开始上课的老师:
885822-20160507201335046-1910174456.jpg

正在上课的我:
885822-20160507201359484-667612046.jpg

上去敲代码的我:
885822-20160507202535703-817460929.jpg

过程是这样的:
885822-20160507202556375-1204439654.jpg

下来的我:
885822-20160507202611765-756164737.jpg

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

变量:

变量有整形变量,浮点型变量,字符型变量,当然还有指针变量。对于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;
}

885822-20160507205345796-1462487454.png

我:“???”
回来以后自己试了下,弄懂了这个内容,就是把之前输入的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;
}

885822-20160507210257343-1232117562.png

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

指针:

指针是一种特殊的变量,它存储的数值是内存中的一个地址。
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python安装路径查看_查看python安装路径及pip安装的包列表及路径

一、Linux系统 查看Python路径 whereis python 此命令将会列出系统所安装的所有版本的Python的路径效果如下:使用以下命令可分别查看Python2,Python3的安装路径 whereis python2 whereis python3 查看使用pip安装的软件包 默认Python3 pip list Python2查…

python循环10次_开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择...

开发一个循环 5 次计算的小游戏,设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择“、-、*”运算符,构成一个表达式,让用户计算式子结果并输入结果,如果计算结果正确则加一分,如果计算结果错误不…

配置java编译环境

2019独角兽企业重金招聘Python工程师标准>>> (1)我的电脑属性->高级系统配置->环境变量(2)点击第二个"新建(W)..."->输入变量名"JAVA_PATH",变量值"C:\Program Files\Java\jdk1.8.0_91"->确定(3)找系统变量中的Path并双击…

spring aop 必须的包 及里面用到的东西_Spring 原理初探——IoC、AOP

前言众所周知, 现在的 Spring 框架已经成为构建企业级 Java 应用事实上的标准了,众多的企业项目都构建在 Spring 项目及其子项目之上,特别是 Java Web 项目。Spring 的两个核心概念是 IoC(控制反转)和 AOP(面向切面编程)。想了解 Spring 的工…

Android平台和java平台 DES加密解密互通程序及其不能互通的原因

为什么80%的码农都做不了架构师?>>> 网上的demo一搜一大堆,但是,基本上都是一知半解(包括我)。为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DES 加密和Java DES加密…

PDM系统服务器管理,基于PDM的异地协同设计系统

基于PDM的异地协同设计系统随着经济全球化的不断发展,产品设计分工越来越细,产品协同设计团队越来越分散。由于产品设计的需要,分布在不同地方的设计人员和其他相关人员都要参与产品的开发过程,各自承担相应的设计任务&#xff0c…

flex 下对齐_Flex 布局示例

感谢阮一峰老师的教程http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html本示例将教程上所有的布局都简单的实现了一遍,并保存GitHub上面https://github.com/JailBreakC/flex-box-demo​github.com容器的属性1、flex-direction属性flex-direction属性决定主…

python读csv最快方法_使用Python读写csv文件的三种方法

Python读写csv文件觉得有用的话,欢迎一起讨论相互学习~Follow Me前言逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件…

url过滤怎么解除_Shiro-实战(四)---过滤器机制

1 简介Shiro使用了与Servlet一样的Filter接口进行扩展 1.1 NameableFilterNameableFilter给Filter起个名字,如果没有设置默认就是FilterName 当我们组装拦截器链时会根据这个名字找到相应的拦截器实例1.2 OncePerRequestFilter用于防止多次执行Filter,也就是说一次请…

django使用LDAP验证

1.安装Python-LDAP(python_ldap-2.4.25-cp27-none-win_amd64.whl)pip install python_ldap-2.4.25-cp27-none-win_amd64.whl 2.安装django-auth-ldap(django-auth-ldap-1.2.8.tar.gz)(下载:https://pypi.py…

风变的python课程怎么样_风的解释|风的意思|汉典“风”字的基本解释

【戌集下】【風】 風康熙筆画:9 部外筆画:0〔古文〕 𠙊 𠙈凬飌檒【唐韻】方戎切【集韻】方馮切【正韻】方中切, 𠀤音楓。風以動萬物也。【莊子齊物論】大塊噫氣,其名爲風。【河圖】風者&#x…

getprivateprofilestring读不到数据_Tomcat NIO(11)请求数据读取

在上一篇文章里我们主要介绍了 tomcat io 线程中涉及到的主要核心类,包括 AbstractProcessorLight,Http11Processor,CoyoteAdapter,这里主要介绍对于请求数据的读取。对于 tomcat 请求数据的读取来说,可以分为请求行的…

企业办公自动化系统_OA系统的核心功能有哪些?分析当下OA系统的缺陷以及相关解决方案...

什么是OA系统,OA是英语Office Automation的简称,字面意思是办公自动化,即将计算机、通信等现代化技术运用到传统办公中,进而形成的一种新型办公方式。它利用现代化设备和信息化技术,代替了办公人员传统的部分手动或重复…

python whl_python whl是什么文件

在安装whl文件之前,我们需要先搞清楚什么是whl文件,whl格式本质上是一个压缩包,里面包含了py文件,以及经过编译的pyd文件。使得可以在不具备编译环境的情况下,选择合适自己的python环境进行安装。在Win7下安装whl文件&…

android activity生命周期_Android岗高频面试题合一集,看你能答出几题?

前言面试季黄金时期来袭,想必许多朋友在这时有找工作、换工作、跳槽涨薪等想法,但你们都有一个相同的过程那就是面试。大家肯定想知道面试时都问哪些面试相关问题,所以就去网上查找题去刷题,为了省去大家找题的时间,小…

java web判断服务器是否是本机

1,如何获取浏览器的ip Java代码 /*** * 获取客户端ip地址(可以穿透代理) * param request * return */ public static String getClientIpAddr(HttpServletRequest request) { String ip request.getHeader("X-Forwarded-For"…

数据字典简单例子_Python学习100天-Day14(数据分析篇-pandas02)

Day14-读取文件接着上一天的内容,我在学习的过程中发现,DF数据还可以利用几个Series数据组成,具体看一个例子:两种形式,第一种是直接对Series创建DF对象,得出的结果。第二种是通过字典的形式创建DF对象&…

把百度网站设为首页_网站百度推广效果好不好?怎样才能把网站推广到百度首页?...

在移动互联网营销的过程中,有着各式各样的营销手段,也有着丰富多彩的营销平台,而百度平台是大家非常熟悉的,它拥有着亿万用户,几乎小伙伴们每天都需要通过百度查找各种资讯,来满足自己的需求,丰…

ZZULI 1876: 蛤玮的项链 Hash + 二分

Time Limit: 6 Sec Memory Limit: 128 MBSubmit: 153 Solved: 11SubmitStatusWeb BoardDescription 蛤玮向心仪的妹子送了一条项链,这条项链是由小写字母构成的首尾相接的字符串,妹子看了看项链对蛤玮说,"我希望它是对称的",蛤玮想了想之后决定,从项链上截取出一段…

python调用菜单响应事件_Python处理菜单消息操作示例【基于win32ui模块】

本文实例讲述了Python处理菜单消息操作。分享给大家供大家参考,具体如下: 一、代码 # -*- coding:utf-8 -*- #! python3 import win32ui import win32api from win32con import * from pywin.mfc import window class MyWnd(window.Wnd): def __init__ (…