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


    今天一大早登了下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,那就还是乖乖地去学习!

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



  • 相关阅读:
    MyBatis学习总结(5)——实现关联表查询
    MyBatis学习总结4--解决字段名与实体类属性名不相同的冲突
    MyBatis学习总结3-优化MyBatis配置文件
    各种数据库的数据类型
    Ubuntu下jdk配置
    null和""的区别
    单例模式
    知识体系(不断更新)
    Servlet错误一览
    如何锻炼敲代码的能力
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7221442.html
Copyright © 2020-2023  润新知