久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2254|回復: 0
打印 上一主題 下一主題
收起左側

關于一個C語言結構指針的臆想

[復制鏈接]
跳轉到指定樓層
樓主
ID:82781 發表于 2015-6-13 17:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


我為這個問題糾結,那就是C中的結構指針,書中常見的形制大致是這樣的:
struct
{
     uint32_t a;
     uint16_t b;
     uint8_t c;
}*numb;
然后再程序中引用這個結構指針就是numb->a和numb->b沒什么問題,悲劇的是在庫文件中發現一種我不能解釋的形制如下:
#define numb (numb_typ*)地址這種新式,numb_typ是一個類似結構宏的定義,問了好多人,只言片語,不解其故,怎么解釋呢?我翻來覆去的想這個問題,終于在今早上洗臉的時候突然想到這問題可能是這樣的:

首先:不要管這個宏把它拆解,就是(numb_typ*)地址這種形式那么這個numb_typ是數據類型因為沒記錯的的話結構和枚舉都是數據類型,有在外面加了括號-----“強制類型轉換”但是他轉換誰呢?轉換地址嗎?顯然不是,他肯定不是轉換地址,地址他也不需要轉換,那他轉換誰呢?這時候看看他的后面緊跟“*”,似乎預示著什么?是不是可以理解為他強制轉換了一個結構指針?但是變量跑哪里去了?沒有變量的指針傷不起啊,從結果看是肯定定義的,因為結果中就是用結構指針的形式訪問的。
其次:另一方面講他有不符合常理,不按套路出牌,他沒有用賦值的辦法來把地址寫入而是直接類似定義一個結構指針變量,但是只有把它理解成它定義了一個結構指針變量才符合常理,就變成這種
          (numb_typ)*p;
          p=(numb_typ*)地址;//立即數轉換為地址

這樣P就是一個結構指針,他就指向以這個地址開頭的連續數據區域。所以:
(numb_typ*)地址<=>(numb_typ)*p;p=地址;兩者等價,前者的形制更簡便速度更快,效率更高,只有他等價才可以解釋為什么可以用結構指針來訪問,想必就是“*”帶來的困惑,哎!

總之:以上所述均是不可靠的,有帶進一步請教高人,暫且這樣理解吧,這種寫法是合法的,C語言啊C語言靈活是你的優點也是你的缺點,你太靈活大了!這也映射了人生,加油吧,不管結果是什么但我從未放棄!









分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男人天堂网站 | 日日夜精品视频 | 男女污污网站 | 国产区在线 | 一区二区三区在线看 | 激情国产视频 | 欧美综合在线观看 | 国产999精品久久久久久 | 日本一二三区电影 | 夜夜爽99久久国产综合精品女不卡 | 亚洲欧美日韩精品久久亚洲区 | 欧美一级免费片 | 91精品国产综合久久久久久 | 99久久久久久 | 欧美 日韩 国产 成人 | 黄色免费网址大全 | 蜜桃av鲁一鲁一鲁一鲁 | 午夜免费看| 国产精品视频一区二区三区四区国 | 日韩电影中文字幕在线观看 | av 一区二区三区 | 人人做人人澡人人爽欧美 | 欧美电影在线 | 国产亚洲精品a | 亚洲精品高清视频 | 激情一区二区三区 | 亚洲精彩视频在线观看 | 精品一区二区三区四区五区 | 日韩一区二区av | 国产清纯白嫩初高生视频在线观看 | 国产成人99久久亚洲综合精品 | 中文字幕在线免费观看 | 特一级黄色毛片 | 一区欧美 | 成人精品福利 | 日本高清中文字幕 | 成人国产精品久久久 | 精品国产精品一区二区夜夜嗨 | 日本精品久久久久久久 | 婷婷久久五月天 | 毛片一区二区三区 |