指針結構體函數-事實上能夠這樣具體理解

今天一大早登了下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.pswp.cn/news/455673.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455673.shtml
英文地址,請注明出處:http://en.pswp.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…

關鍵幀 關于decode_one_frame函數

田克平(94338047) 16:57:34能自己設置某幀為關鍵幀嗎? 抱柱者(86311414) 16:57:59to 田克平可以 田克平(94338047) 17:00:00呵呵,把丟包后的下一幀設置為I幀可以嗎?來處理丟幀現象 ☆雪天/kf☆(279373002) 17:00:42這個難度大了 田克平(94338…

不出現php version網頁_php冷知識 - 從命令行參數列表中獲取選項

分享一個php的冷知識 - ,從命令行參數列表中獲取選項用到的函數是getopt 說明函數簽名是這樣的getopt ( string $options [, array $longopts [, int &$optind ]] ) : array|bool false解析傳入腳本的選項,成功返回數組,解析失敗返回fals…

【機器學習】opencv-攝像頭中的人臉采集

本次在視頻識別的程度上增添了攝像頭實時識別, 區別在于: # v cv2.VideoCapture(./dzd2.mp4) v cv2.VideoCapture(0) import numpy as npimport cv2face_detector cv2.CascadeClassifier(./haarcascade_frontalface_alt2.xml) # v cv2.VideoCapt…

[計算機視覺][神經網絡與深度學習]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編程軟…