指针结构体函数-事实上能够这样具体理解

今天一大早登了下QQ空间,看到本科的一个学弟发表一篇日志。写关于西电微软俱乐部面试题的解答,写的非常不

错。

我也一下子起兴了,由于我以前也是被指针困惑非常久。搞不清头绪,本科到研究生。我也笔试面试不下二十次

了。每次面试的时候问到指针或者引用这个问题我总是答不完美。灰溜溜的感觉(我一个堂堂985的硕士研究生啊。这

种问题都答不出来感觉非常丢脸的。我的感受是这样子的!)。。

。趁这个时候再又一次复习下指针,顺便还有结构体。函

数。

尽管我讲的不是面面俱到。可是你看了绝对会受益!挺有趣的,不信你往下看。。。


首先,我想说的是这个面试题,实在不是必需这样子出。


好了,咱们開始吧!

原题例如以下:


在这里我不依照顺序,尽量让大家理解。

这个并不恐怖,c、c++语言没什么难的。进不进俱乐部、协会事实上意义真的

不大,重点在于自学,在于你在大学干了什么。回归正题。

我仅仅讲3个东西。从难往简单了讲,3步你就懂

了。。!

!。

 

字 面意思最主要的英语,时间,你的时间。宝贵的时间。然后一个网址,前面是%d,它代表这个结果是一个十进制

整数的意思,后面有一个xdmstc.com就 是西电微软俱乐部的意思。

而print是“输出”的意思,也就是说。输出的内容就

是答案。后面的一堆代表着那%d,如今请你 先不要管他。这样一来,答案就变成了:

 

“ ‘一个十进制数’.xdmstc.com”,也就是说。它是一个网址。

 

简单说一下那个&和*是什么意思---------第一步開始。

 

我告诉你一个馒头在一个锅里,你就知道哪里能够填饱肚子了对不正确?。你沿着我手指的方向去找那个锅里的那个馒

头。你就攻克了温饱问题------这里我的手相当于一个罗盘,一个指南针。告诉你馒头的位置在哪里!

 

你猜对了!

这就是我要说的。那个指向锅的手,叫做“指针”。你如今没吃饱已经饿晕了对不正确!所以你眼冒金星,所

以这里的符号就用一个星来“*”表示,总结出来就是:

 

“ 一个人的手 * 指向锅的手 ”

 

这里面“一个人的手”是一个限定对吧?它不是一仅仅猫的,也不是一仅仅老鼠的。是一个人的,也就是指定了类型;后面

的“指向锅的手”,告诉了大家那个地方能够找到吃的!

总结起来就是:

 

“类型名 * 指针名”,我们给“*”起个名字,叫做“指针运算符”!

关于类型名什么意思,在后面我解释!

 

而 那个锅。就是有馒头的“地址”,我们手机指南针校准时候都是绕“8”字形,所以我们用“ & ”符号,与馒头合起来也就

是馒头的地址啦。我们要取馒头吃的--------所以这里我们管“&”叫做取地址运算符^_^。也就是 说,“&馒头”就叫做馒头

的地址。而馒头,有可能是白馒头。黑馒头。花馒头,是可变的。所以名字就叫作“变量名”。而&后面也就仅仅能跟着

变量名,总结起来就是:

 

“馒头的地址 =&馒头”

 

你显然已经意识到。手不能吃(当然你没事舔你的爪爪能充饥也好!),手指着的那个东西才干吃 !

所以运算符和指

针名合在一起才干代表那个馒头!

 

就是说,那个地方里面的东西:“*指针名 = 馒头”

 

所以,上面的类型名呢?不难理解。它就是代表着指针所指变量的类型!

嘿嘿嘿。

 

锅呢?锅也不能吃!(你铁齿钢牙除外。。

)锅里的东西才干吃!它的意义是什么?他的意义是空间,代表着那个存

放变量的空间---------在那遥远的地方。有一个存储东西的锅,它存着一个馒头,一个引路者。用手指向那个馒头,一

个孩子双眼冒金星去拿走里面的馒头。

 

所以。

 

要吃的东西 = 馒头

 

*指针名 = 要吃的东西

 

*(&要吃的东西)= 馒头

 

如今懂了吧?举个真正的样例:有变量a,那么&a就代表变量a的地址,p为指向位置(这里我们起一个专业名词。叫

做存储单元,),*p即为指针p所指的存储单元的内容。

 

难吗?指针是什么,该死的符号是什么。地址是什么。大量的基础的应用。确实指针是个非常强大的内容。可是这些是

最主要的,我们写project的时候经常常使用得到这些最主要的。而我讲完了!

难吗?第一步。最难的一部分。ok了!

 

继续同学们。struct英文就是“结构”的意思。这个都懂吧?!不懂没关系。查字典就懂了!另外说一下,我这篇文章仅仅

能保证没接触代码的学生能看懂,可是不能面面俱到,也不能深入。所以批评文章请走人,假设有写错的欢迎指正!

 

你 的班级有好多人。构成了一个集体,大家各有分工。班长、团支书、副班长、副团支书、班长的秘书、副班长的秘

书。。。。。哈哈。总之结构严谨,各有属性,构成了班级体-----------所以,简称“结构体”。用struct表示,你班的同

学们呢?!就叫做结构体的成员,班级把你们包裹住!就是说用大括号把你们这帮孩子封锁到教室里给我好好上课!

而成员又有什么乱七八糟的职责呢?我说一下你就懂啦。

 

struct 班级a(比方我的班级体是021131班,那么这就是你的结构体的名字!)

 

{

 

班长 张三;

 

团支书 李四;

 

};

 

那些所谓的职务,就是结构体成员变量的类型,这就是一个结构体。

 

大家一定非常害怕高中那段日子:“张三,尼玛的出来!

让你在教室说话!。!

”对!老师指着你让你出来,或者其它人

来班级找你指定你出来,班级那么多人怎么办?叫你的名字呗。哈哈。

 

所 以,一种简便的取出结构体的成员的运算符诞生了--------"-> ",对,没错就是个箭头。你是不是在想。这个跟刚才的

指针好像啊!

找一个人不一定非要用手指着呀!可是,你也意识到了,思想是一样的,我找出那个人。把他叫出来,

任务完毕!

总结起来就是。用指针訪问结构体的一个成员的方式:

 

指针名 -> 成员名

 

第二步ok。

 

好了!最后一个概念-----函数。

 

这个我都能够不讲了!你绝对能理解。

 

已知y = f(x),那么y就叫做x的函数。

 

对。就这样,其它限制条件我不写了,可是。事实上中心思想就这样。

 

这里面,就是:

 

函数名字(里面的乱七八糟的东西)

 

ok!如今上面的程序依照原理来说,你能攻克了。

 

我知道你想问什么,那个tm_year什么鸟?!

 

就是这样,今年。错了,是3年里 ,我遇到的全部的新生,都没有一个,没有一个是我的那位传说的学长的后尘。

 

“西电和成电哪个好”。“西电##专业怎么样”,“军训累不累”,“大一让带电脑么”,“西电(#专业)排名多少”,“食堂好

吃么”。“宿舍条件怎么样,热水乱七八糟的 ”。“去市区是916么”,“开学的考试怎么回事”。。。无聊且无意义的问

题。

 

我想说的是,这样的问题你不认为无聊吗?。


你会说:“人家大一的,就这点问题被!能怎么样?”

 

凡是问这样问题的 ,最后没有一个成为真正的牛人。凡是说大一的问这些问题不为过的人 。水平也不怎么样。

 

为什么?

 

答案,凭什么 。这是大学教你的第一堂课:大学靠的是自学,这些问题你网上都能查到!

都有答案!为什么还问?不

知者不为过,好吧!

你自己安慰你自己吧!

我在这里明白告诉你:你大学第一堂课的成绩就是不及格!

 

你指望老师教你?手把手问你会不会?!

这是大学。假设 你还在跟我争论这个问题。仅仅能说句,你好。菜鸟!

 

该告诉你的我都告诉你了。这个程序你还看不懂!

你能够去死了。谷歌struct tm,对应结果例如以下,就是说。这个是

人家伟大的微软公司一惊做好了的,你就看着就能够了:


 



标题,mumber,type,meaning。你哪个看不懂?

 

就是说,相应的年份,减去1900,我已经告诉你了!就是tm_year -1900以后的数

 

如今分析那个程序,一句一句来!

 

第一句,你就知道有这么个定义,接着有这么个东西precious_time即可了。

 

第二句。结构体后面有个东西。是your_time,他是个啥啊?看上面的谷歌截图。请与后面的东西关联一下加深一下理

解。

第三句,一个函数,括号中面的你们肯定懂。time微软写好的,字面意思,结果是系统时间!

 

第四句,又是一个函数!并且除了函数名不一样,括号中面的东西与第三句全然一样!此函数获得的tm结构体的日历

时间。也是微软写好的。

 

第五句。相应的年份 - 1900,然后再加上1900。今年是2014,最后输出答案:2014.xdmstc.com。

 

就是说,有那么一个变量,叫做precious_time,有那么一个指针叫做your_time,电脑右下标的时间。今年是2014年。

 

我近期在弄论文。非常恶心。我写这个不为别的,算是期间的小小歇息,也是个人看不惯仗着代码来欺负新生的措施。

 

在这里顺便告诉一下。真正的东西,使用心血换来的。事实上。真的能用代码解决的问题,都不是问题。


最后,我强调一下。也算是给刚进入大学的大一新生们一个忠告:学习这个东西靠的是自觉、自学,不要找理由这借口更不要不要骗自己了。懂就不用说。不懂不能装懂,一定要去搞清楚。基础非常重要。不然后面会非常麻烦(当然,你以后不从事相关行业另当别论。仅仅要你不是官二、富二XXX,那就还是乖乖地去学习!

),不要指望别人会手把手的去教会你什么,好好珍惜大学四年学习的时光吧。



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

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

相关文章

【python毕业设计】Django框架实现学生信息管理系统

Django框架实现学生信息管理系统 演示视频:Django学生信息管理系统_腾讯视频 演示界面内容如下 总体概括 注册流程 首先进行输入用户名(邮箱)、密码以及验证码,输入完之后点击注册按钮。如果输入的不正确,提示错误信…

python中continue只结束本次循环_循环(while,break,continue),转义字符

Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 >01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行代码 分支 —— 根据条件判断,决定执行代码的 分支 …

码率控制技术原理

引起编码器的输出比特码率波动的原因主要有两个。首先,数字视频信号中包含了大量的时域和空域冗余,编码器的主要任务就是去除这些冗余。由于时间冗余和空间冗余是随机的,从而造成编码器输出比特率波动。另一个原因是变长编码,变长…

python如何安装pip

pip的安装操作 pip简介 pip 是一个现代的,通用的 Python 包管理工具。提供了对Python 包的查找、下载、安装、卸载的功能。 环境搭建 安装pip首先要安装python,可以参考python安装教程 安装完python后,可以在cmd中输入pip list 测试一下pip是否默认附带着安装,若…

【排序算法】python 十大经典排序算法(全网最详)

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序…

最新海康摄像机、NVR、流媒体服务器、回放取流RTSP地址规则说明

本文档主要介绍海康威视设备预览、回放、流媒体取流的RTSP URL和IE直接预览、回放的HTTP URL。RTSP为取流协议,取到码流后需要解码显示,可以通过VLC播放器进行测试,IE等浏览器网页不支持RTSP协议直接取流预览或者回放。网页上需要跳过登录界面…

pug模板引擎(原jade)

前面的话 为什么要引入pug,pug有什么特别之处呢?有一些嵌套层次较深的页面,可能会出现巢状嵌套,如下图所示 在后期维护和修改时,一不小心少了一个尖括号,或者某个标签的开始和闭合没有对应上,就…

python安装环境傻瓜式安装_前后端分离——前端开发环境傻瓜式一步到位 nodejs ruby python nginx 安装搭建配置...

前端开发环境一步到位 一、准备工作 nodejs安装 安装:next->next.... Ruby安装 安装:next->next.... 需要配置到path:将安装目录复制到环境变量中,跟jdk环境变量配置一样。 注意下一步:Python安装 安装&#xff…

【Python】Python学到什么程度可以面试工作?------持续更新 ...

前言: 从事python学习,有爬虫、web后台、深度学习相关经验, 坐标北京欢迎骚扰。 本答案力求简洁和直击重点,代码部分使用Python3,更详细的解释请Google,回答有误请务必提醒答主,我将及时改正。…

H.264的码率控制算法

H.264的码率控制算法采用了多种技术,其中包括自适应基本单元层(Adaptive Basic Unit Layer)、流量往返模型(Fluid Traffic Model)、线性MAD模型、二次率失真模型等。并且采用了分层码率控制策略,共分为三层:GOP层、帧层和基本单元…

消息中间件Client模块划分

上图是之间讨论确定的系统架构(后续内容会按照这个架构来叙述),其中: 客户端包含Producer和Consumer两大块 客户端需要和NameServer交互来获取元数据 客户端需要和Broker交互来读写消息 Client模块划分 1. 网络模块 第一个仍然是…

详解HashMap数据结构实现

HashMap的设计是由数组加链表的符合数据结构,在这里用自己的语言以及结合源码去总结一下,如果有不对的地方希望评论指正,先拱手谢谢。 HashMap是日常中非常常用的一种数据结构,我们要想深入了解学习任何一门技术,都是要…

java web开发学习手册_Java 人必备学习手册开发下载!

今天给大家分享一套 5000 页的 Java 学习手册,新鲜出炉!此手册内容专注 Java技术,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git,…

Django初次体验

Django初次体验 关于django的安装,宝宝们可以参考django简介以及安装 Django框架的搭建 在终端中进入需要建立项目的目录 执行: django-admin startproject mysite其中,mysite是项目目录名,可以自定义 我们来看看startprojec…

【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】...

【002-Add Two Numbers (单链表表示的两个数相加)】 原题 You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked…

不出现php version网页_php冷知识 - 从命令行参数列表中获取选项

分享一个php的冷知识 - ,从命令行参数列表中获取选项用到的函数是getopt 说明函数签名是这样的getopt ( string $options [, array $longopts [, int &$optind ]] ) : array|bool false解析传入脚本的选项,成功返回数组,解析失败返回fals…

[计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程2

faster-rcnn分为matlab版本和python版本,首先记录弄python版本的环境搭建过程.matlab版本见另一篇:faster-rcnn(testing): ubuntu14.04caffecuda7.5cudnn5.1.3opencv3.0matlabR2014a环境搭建记录 首先,进入官方github网站:https://github.com/rbgirshick/py-faster-…

modbus从站模拟软件_作为工控电气人,你知道我们必备的软件有哪些吗?

作为工控电气人,你知道我们必备的软件有哪些吗?今天我就来给大家介绍一下,工控电气人常用的几款软件,有了它们,我们的工作学习将会更易上手,效率翻倍。以下介绍主要是分为电工常用软件,PLC编程软…

【数据分析】豆瓣电影Top250爬取的数据的可视化分析

豆瓣Top250网址 将之前爬取到的豆瓣电影进行简单的可视化: 数据列表保存为CSV格式,如图 导入数据 做好准备 #!-*- coding:utf-8 -*- import pandas as pd import numpy as np import matplotlib.pylab as plt import re from numpy import rank from bu…

sqlmap的二次开发

1、sqlmapapi的帮助信息。 -s 启动sqlmap作为服务器 -h 指定sqlmap作为服务器的IP地址,默认127.0.0.1 -p 指定sqlmap服务器的端口,默认端口为8775 2、启动服务 浏览器访问: 3、api介绍:sqlmap项目下的api.py文件含有所有的api adm…